Shell Programming的一些常见问题

引号

  • 单引号 v.s. 双引号
    单引号不进行变量替换,双引号会进行变量替换

  • 变量是否加引号
    一个保险的做法是变量总是加引号, 因为变量的值有可能带空格
    [[ ]]内会把变量替换后的值当成一个整体,但[ ]不会

[ ] 和 [[ ]]

  • [ 等于 test, 是一个程序,会把] 当成参数列表里最后一个参数
  • [[ ]] 是bash specific的,是bash关键字。
  • [ -f “a.txt” ] && [ -f "b.txt ] 中的&&是连接两个命令的运算符;[[ -f “a.txt” && -f “b.txt” ]] 中的&&是逻辑运算符
  • [[ ]] 内变量替换后如有空格也会被当成一个整体
  • [[ ]] 内() 和 >, < 不用转义,而[ ]内需要,因为[ 是命令,< 对于它来说是重定向符号
    []和[[]]的区别

比较运算符

  • 对于数值比较(把123当成值而不是当成字符串),不管是[ ] 还是 [[ ]] 一律是 -eq -lt, -gt这一套;在(( ))里,和C语言一致。
  • 在[ ] 和 [[ ]] 里,<, >, =,== 都是字符串比较; ==是bash specific,=是shell标准
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值