题记
由于要跑kaldi(一个语音识别工具),里面有很多shell脚本要运行,所以快速学习一遍shell,主要是参考https://www.runoob.com/linux/linux-shell-variable.html 学习。
变量
显式定义
1
2
3
|
your_name="cj"
echo $your_name
echo "Hi ${your_name}!!!"
|
注意:1. 等号=
两边不能有空格. 2. 调用的时候要写$
3.调用变量可以加上花括号{}
,来帮助确定变量名的边界.
隐式定义
1
2
3
|
echo `ls ./|grep sh`
echo $(ls ./|grep sh)
echo $(pwd)
|
1
2
3
|
learn.sh
learn.sh
/home
|
只读变量和删除变量
1
2
3
4
|
myUrl="http://www.google.com"
readonly myUrl
variable=“cj”
unset variable
|
要点:1. 若修改只读变量会报错 2. unset 命令不能删除只读变量
字符串
单引号
1
2
3
4
5
|
v='variable'
s='${v}\n Hi'
echo -e $s
join='hi '$v
echo $join
|
1
2
3
|
${v}
Hi
hi variable
|
要点:不能使用变量
双引号
要点:可以使用转义符和变量
1
2
3
4
5
|
v='variable'
s="${v}\n Hi"
echo -e $s
join="hi $v"
echo $join
|
1
2
3
|
variable
Hi
hi variable
|
不用引号
中间不能有空格,转义的\n
变成输出n
了。
1
2
3
4
5
|
v=variable
s=${v}\nHi
echo -e $s
join='hi '$v
echo $join
|
1
2
|
variablenHi
hi variable
|
字符串操作
-
获取字符串长度
1
2
|
string="abcd"
echo ${#string} #输出 4
|
-
提取子字符串
1
2
|
string="runoob is a great site"
echo ${string:1:4} # 输出 unoo
|
-
查找子字符串
1
2
|
string="runoob is a great site"
echo `expr index "$string" io` # 输出 4
|
数组
定义数组
1
|
array_name=(value0 value1 value2 value3)
|
读取数组
@
获取数组所有元素