题记

由于要跑kaldi(一个语音识别工具),里面有很多shell脚本要运行,所以快速学习一遍shell,主要是参考https://www.runoob.com/linux/linux-shell-variable.html 学习。

变量

显式定义

  • 代码

    your_name="cj"
    echo $your_name
    echo "Hi ${your_name}!!!"
    
  • 输出

    cj
    Hi cj!!!
    

注意:1. 等号=两边不能有空格. 2. 调用的时候要写$ 3.调用变量可以加上花括号{},来帮助确定变量名的边界.

隐式定义

  • 代码

    echo `ls ./|grep sh`
    echo $(ls ./|grep sh)
    echo $(pwd)
    
  • 输出

    learn.sh
    learn.sh
    /home
    

只读变量和删除变量

myUrl="http://www.google.com"
readonly myUrl
variable=“cj”
unset variable

要点:1. 若修改只读变量会报错 2. unset 命令不能删除只读变量

字符串

单引号

  • 代码

    v='variable'
    s='${v}\n Hi'
    echo -e $s
    join='hi '$v
    echo $join
    
  • 输出

    ${v}
    Hi
    hi variable
    

    要点:不能使用变量

双引号

要点:可以使用转义符和变量 - 代码

v='variable'
s="${v}\n Hi"
echo -e $s
join="hi $v"
echo $join
  • 输出

    variable
    Hi
    hi variable
    

不用引号

中间不能有空格,转义的\n变成输出n了。

v=variable
s=${v}\nHi
echo -e $s
join='hi '$v
echo $join
  • 输出

    variablenHi
    hi variable
    

字符串操作

  • 获取字符串长度

    string="abcd"
    echo ${#string} #输出 4
    
  • 提取子字符串

    string="runoob is a great site"
    echo ${string:1:4} # 输出 unoo
    
  • 查找子字符串

    string="runoob is a great site"
    echo `expr index "$string" io`  # 输出 4
    

数组

定义数组

array_name=(value0 value1 value2 value3)

读取数组

${数组名[下标]}

@获取数组所有元素

echo ${array_name[@]}