shell script 之一:变量和赋值

变量命名:

- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。

- 中间不能有空格,可以使用下划线(_)。

- 不能使用标点符号。

- 不能使用bash里的关键字(可用help命令查看保留关键字)。


  无效的变量命名:

    ?var=123
    user*name=runoob


赋值变量:

1:
直接赋值

 name="lily"

  

2:

利用语句赋值 

for i in `ls /boot`;do echo $i ; done

#将/boot目录下的文件名循环赋值给i并打印,可以用$(ls /boot)代替`ls /boot`

 

3:
间接赋值read -p

[root@test ~]# read -p "your name?" name1 name2
your name?666 888 
[root@test ~]# echo $name1 $name2
666 888

  

使用变量
  利用$var或者${var} 调用变量,加{}可以帮助解释器识别变量的边界。
  如$varlog会找varlog的变量,${var}log就没问题。

 



只读变量

var=abc
readonly abc
var=ab 
-bash: i: readonly variable   #报错,只读变量的值不能被改变和删除

 


删除变量

unset var  #变量前不加$符

  


***************************************
变量类型-字符串

1:
单引号''

  name='my name is $i'
  echo $name
  my name is $i

  eg:echo $name 会显示 my name is $i,单引号内的变量不会被读取

  单引号字符串的限制:

  单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  单引号字串中不能出现单引号(对单引号使用转义符后也不行)。

 2: 

双引号""
 

name="my name is $i"

 

  双引号的优点:

  双引号里可以有变量

  双引号里可以出现转义字符

3:

获取字符段长度 ${#var}

  name=sunny
  echo ${#name}
  5 #返回字符段长度5

 

4:

提取字符串,从第n个字符开始提取m个字符${var:n:m}

  name="my name is sunny"
  echo ${name:11:5}      #从第11个字符起提取5个字符。
  sunny

  

 

 

**********************************************************************
变量类型-数组
1:
定义数组
数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。

array={v1 v2 v3 v4}
或者
array=(
v1
v2
v3
)

  

2:
读取数组,注意下标由0开始编号
${数组名[下标]}

echo ${array[0]}
v1

 

 

获取数组的所有元素

echo ${array[@]}

  

# 取得数组元素的个数

length=${#array_name[@]}

  

# 取得数组单个元素的长度

length=${#array_name[@]}

 


posted @ 2018-03-19 14:43  sunny18  阅读(3775)  评论(0编辑  收藏  举报