LINUX SHELL 变量


变量类型


一直以为bash shell的变量是无类型的,其实也是可以指定类型的。

Administrator@DADI ~
$ declare -i num=10

Administrator@DADI ~
$ echo $num
10

Administrator@DADI ~
$ num=‘iamaint‘

Administrator@DADI ~
$ echo $num
0

通过declare的方法强制指定类型后,变量就不在接收非int的赋值操作。

常量

定义语法为:
readonly OPTION VARIABLE(s)

定义后,该变量无法重新赋值或者unset
Administrator@DADI ~
$ readonly MY_NAME=‘Administrator‘

Administrator@DADI ~
$ MY_NAME=‘ANOTHERNAME‘
-bash: MY_NAME: readonly variable

Administrator@DADI ~
$ unset MY_NAME
-bash: unset: MY_NAME: cannot unset: readonly variable


数组操作

两种定义方法
ARRAY=(value1 value2 ... valueN)
ARRAY[0]="no.1 element"

元素
myarray=(1 2 3 4 5 6 7 8)

echo ${myarray[0]}

myarray[0]="new value 1"

数组元素个数
echo ${#myarray[*]}
不要和下面的搞混,只会返回myarray第一个元素的长度
echo ${#myarray}

遍历
echo ${myarray[*]}

for i in ${myarray[*]} ; do echo $i;done
对于连续长度的也可以使用

array_len=${#myarray[*]}
i=1
while [ $i -lt $array_len ]
do
  echo ${myarray[$i]};
  i=$[ $i + 1 ];
done
done;

字符串操作

取子串
${VAR:OFFSET:LENGTH}

Administrator@DADI ~
$ mystring="123456789"

Administrator@DADI ~
$

Administrator@DADI ~
$ echo ${mystring:2:2}
34

Administrator@DADI ~
$ echo ${mystring:2:4}
3456

替换
${VAR/PATTERN/STRING}
$ echo ${mystring/2/new2}
1new23456789




LINUX SHELL 变量

上一篇:《UNIX环境高级编程》笔记--IO多路转换


下一篇:宏定义的使用