Shell 编程常用参考

Shell特殊变量 $0, $#, $*, $@, $?, $$和命令行参数

Shell 中的特殊变量参考如下表:

变量 含义
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2
$# 传递给脚本或函数的参数个数
$* 传递给脚本或函数的所有参数
$@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到
$? 上个命令的退出状态,或上个函数的返回值
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID

注:$ 和 $@ 的区别*

  • $* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。
  • 但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。

Shell 中的 if 判断

条件测试的表达式

  • if [ str1 = str2 ]:当两个串有相同内容、长度时为真
  • if [ str1 != str2 ]:当串str1和str2不等时为真
  • if [ -n str1 ]:当串的长度大于0时为真(串非空)
  • if [ -z str1 ]:当串的长度为0时为真(空串)
  • if [ str1 ]:当串str1为非空时为真

整数比较

  • -eq:测试两个整数是否相等
  • -ne:测试两个整数是否不等
  • -gt:测试一个数是否大于另一个数
  • -lt:测试一个数是否小于另一个数
  • -ge:大于或等于
  • -le:小于或等于

命令间的逻辑关系:

  • 逻辑与:&&
  • 逻辑或:||

字符串比较

字符串比较,直接用 ==、!=、>、< 等符号即可,两边需要有空格。

文件测试

  • -e:FILE 测试文件是否存在
  • -f:file 测试文件是否为普通文件
  • -d:file 测试指定路径是否为目录
  • -r:file 测试文件对当前用户是否可读
  • -w:file 测试文件对当前用户是否可写
  • -x:file 测试文件对当前用户是都可执行
posted @ 2023-07-12 13:36  wxweven  阅读(8)  评论(0编辑  收藏  举报