定义变量
- 定义和赋值变量时,变量名不加
$ - 变量名和
=之间不能有空格 - 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
- 中间不能有空格
- 不能使用标点符号和bash里的关键字
也可以通过语句对变量赋值:
for file in `ls /etc`
for file in $(ls /etc)
使用变量
- 使用定义过的变量时,要在变量名前面加
$ - 如果变量名的边界需要识别,则用
{}作为变量名的边界 - 推荐给所有变量加上花括号,这是个好的编程习惯
- 使用
readonly命令可以将变量修改为只读 - 使用
unset命令可以将变量删除
字符串
- 使用单引号、双引号都可以,但双引号里可以有变量和转义字符
拼接字符串
your_name="runoob"
# 使用双引号拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1
# 使用单引号拼接
greeting_2='hello, '$your_name' !'
greeting_3='hello, ${your_name} !'
echo $greeting_2 $greeting_3
获取字符串长度
string="abcd"
echo ${#string} # 输出 4
echo ${#string[0]} # 输出 4,变量为字符串时,${#string} 等价于 ${#string[0]}
提取子字符串
第一个字符的索引值为 0。
string="runoob is a great site"
echo ${string:1:4} # 输出 unoo
查找子字符串
查找字符 i 或 o 的位置:
string="runoob is a great site"
echo `expr index "$string" io` # 输出 4
数组
- bash只支持一维数组
定义数组
数组名=(值1 值2 ... 值n)
使用数组
${数组名[下标]}
下标使用@符号可以获取数组的所有元素。
获取数组的长度
# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
length=${#array_name[n]}
注释
Shell的单行注释用#开头,多行注释可以用:
:<<EOF
注释内容...
注释内容...
注释内容...
EOF
EOF可以替换为别的符号,也可以去掉,去掉的话用单引号把内容包括住:
: '
这是注释的部分。
可以有多行内容。
'