博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell编写总结
阅读量:4957 次
发布时间:2019-06-12

本文共 1332 字,大约阅读时间需要 4 分钟。

变量引用

  • $(VAR): 会将VAR当做一条命令来执行
  • '$VAR': 单引号中包含的变量, 不会被引用, 仍然输出$VAR
  • "$VAR": 双引号中包含的变量, 会被引用成$VAR的值输出
  • ``: 优先执行其中的命令, 用在字符串中时, 仅在""当中有效

有时需要在一个字符串变量中定义一个命令并预先包含一个变量名, 在使用时再转换成变量名, 此时可通过eval命令来达到目的.

CMD='eval echo $VALUE'VALUE="Hello"$CMD# 执行echo "Hello", 输出"Hello"

特殊变量

  • $0: 获取当前执行脚本的文件名,包括路径
  • $n: 获取当前执行的shell脚本的第N个参数, n=1..9, 当n为0时表示脚本的文件名, 如果n大于9, 可用大括号括起来如${10}
  • $@: 这个程序的所有参数"$1" "$2" "$3"..., 这是将参数传递给其他程序的最佳方式, 因为会保留所有内嵌在每个参数里的空白
  • $*: 获取当前shell的所有参数,会将所有的命令行参数视为单个字符串
  • $?: 代表上一个命令执行是否成功的标志,如果执行成功则$? 为0, 否则不为0
  • $#: 获取当前shell命令行中参数的总个数
  • $_: 代表上一个命令的最后一个参数
  • $$: 代表所在命令的PID
  • $!: 代表最后执行的后台命令的PID

日志输出

shell脚本开发中, 输出的语句尽量不出现在标准输出, 除非是少数的步骤提示性语句, 如果是出错信息, 应存入到自己定义的出错日志中, 以便后期维护和调试, 其它不关心的信息直接输出到/dev/null中. 否则输出信息过多, 容易耗尽缓存, 造成脚本运行卡死, 难以调试定位.

  • date: 显示日期时间的命令, 可通过此命令来作为日志的前缀, 方便定位. 一般形式为 "[ date +%Y%m%d-%H%M%S` ]"
  • &[n]: 代表已经存在的文件描述符, &1代表输出, &2代表错误输出, &-代表关闭与它绑定的描述符, 如2>&1 错误输出绑定到标准输出, 2>&- 等价于2>/dev/null

条件判断

使用[ ]判断

注意事项

[ $HOME == $MALL ]

  • [ ]中每个组件都需要空格键来分格, 其中的变量最好都以双引号括起来, 常量最好都以单或双括起来
  • [ ]中==和'='结果都完全一样, 习惯上可尽量使用==
常用参数

数值比较

  • -ne: 比较两个参数是否不相等
  • -lt 参数1是否小于参数2
  • -le 参数1是否小于等于参数2
  • -gt 参数1是否大于参数2
  • -ge 参数1是否大于等于参数2
  • -n:判断变量是否有值

文件比较

  • -f 检查某文件是否存在
  • -d 检查目录是否存在
  • -x:判断是否存在并有可执行权限
  • -d: 文件为目录为真
  • -c: 文件为字符特殊文件为真
  • -b: 文件为块特殊文件为真
  • -s: 文件大小非0时为真
  • -t: 当文件描述符(默认为1)指定的设备为终端时为真

权限比较

  • -r: 用户可读为真
  • -w: 用户可写为真
  • -x: 用户可执行为真

转载于:https://www.cnblogs.com/haoxi/p/6024971.html

你可能感兴趣的文章
iPhone在日本最牛,在中国输得最慘
查看>>
动态方法决议 和 消息转发
查看>>
WPF自定义搜索框代码分享
查看>>
js 基础拓展
查看>>
C#生成随机数
查看>>
iOS CoreData介绍和使用(以及一些注意事项)
查看>>
Android应用程序与SurfaceFlinger服务的连接过程分析
查看>>
Java回顾之多线程
查看>>
sqlite
查看>>
机电行业如何进行信息化建设
查看>>
9、总线
查看>>
Git 笔记 - section 1
查看>>
HDU6409 没有兄弟的舞会
查看>>
2018 Multi-University Training Contest 10 - TeaTree
查看>>
2018 Multi-University Training Contest 10 - Count
查看>>
HDU6203 ping ping ping
查看>>
《人人都是产品经理》书籍目录
查看>>
如何在git bash中运行mysql
查看>>
OO第三阶段总结
查看>>
构建之法阅读笔记02
查看>>