跳到主要内容

shell数据类型

字符串

  • 单引号:直译
  • 双引号:可转义,翻译变量
# 拼接字符串:
' 'string' '
" "string" "
" "

# 获取字符串长度:
${#string}

# 截取字符串:
${string:n:m}

# 查找字符串出现的位置:
`expr index "$string" 字母`

数组

# 定义数组
array(1 2 …n)

# 读取数组元素
${array[n]}

# 读取所有元素:
${array[*]}
${array[@]}

# 读取数组长度:
${#array[*]}
${#array[@]}
${#array[n]} # 某个元素的长度

shell传递参数

sh test_pm.sh 1 2 3

# 解析
$n:获取参数
$#:传递到脚本的参数个数
$*:传递的参数作为一个字符串显示
$$:脚本运行的当前进程ID号
$!:后台运行的最后一个进程的ID号
$@:与$*相同
$?:显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

:<<EOF
$*$@的区别:
只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则“$*” 等价于 “1 2 3”(传递了一个参数),而”$@”等价于 “1” “2” “3”(传递了三个参数)。
EOF