变量
shell中变量比较特殊,变量名和等号之间不能有空格。其它的跟常见的变成语言类似
命名规则:
命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
中间不能有空格,可以使用下划线 _。
不能使用标点符号。
不能使用bash里的关键字
变量的使用
其它语言,一般就直接使用了,但shell需要加 $ 修饰一下,不然就不是输出变量值了,而是当作字符串,原样输出拉
my_name=‘shell1’
my_name=shell2
my_name=“shell3”
** 变量值,加’’ 、“” 、 不加 都可以的**
echo $my_name
echo ${my_name} # 推荐这种 变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界
只读变量, readonly
清除删除变量
unset 变量
字符串
字符串是shell编程中最常用最有用的数据类型,字符串可以用单引号,也可以用双引号,也可以不用引号。
单引号字符串的限制:
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
双引号
双引号的优点:
双引号里可以有变量
双引号里可以出现转义字符
获取字符串长度
变量为字符串时,${#string} 等价于 ${#string[0]}:
字符串截取
查找子字符串
数组
shell 只有一维数组
数组的定义
my_array=(val1 val2 val3) # 的值与值 之间 是空格
数组的取值
${my_array[index]}
${my_array[@]} 等价于 ${my_array[*]} 获取数组中所有元素
${#my_array[@]} 等价于 ${#my_array[*]} 获取数组的长度
${#my_array[index]} 获取数组第几个元素的长度
关联数组
关联数组使用字符串作为下标,而不是整数。关联数组也称“键值对(key-value)”数组,key为下标,value为元素值。
声明关联数组
declare -A 数组名
关联数组的赋值
1、一次赋一个值
数组名[索引名]=值
2、一次赋多个值
数组名=([索引1]=val1 [索引2]=val2 )
3、声明同时初始化
declare -A site=([“google”]=“www.google.com” [“runoob”]=“www.runoob.com” [“taobao”]=“www.taobao.com”)
关联数组访问
#访问“key”对应的value值
echo ${数组名[key]}
#获取关联数组的所有元素值
echo ${数组名[@]}
echo ${数组名[* ]}
#获取关联数组的所有下标值,key
echo ${!数组名[@]}
echo ${!数组名[*]}
注释
单行注释
多行注释
:<< EOF
注释内容…
注释内容…
注释内容…
EOF
:<<!
注释1
注释2
!
:<<'
注释1
注释2
'
传递参数
运算符
关系运算符
test
数值测试
字符串测试
文件测试
循环
#!/bin/bash
for f in ` ls /etc`
do
echo $f
done