1分钟解决shell中容易模糊混淆的知识

目录

  1. $@和$*的区别
  2. -z,-n,!的区别
  3. '' 和""的区别
  4. let 和(())的区别
  5. $()和``的区别

$@和$*的区别:二者都是表示数组的所有元素,在外面加上双引号下就会变成字符串,

然后"$*" 就是一个整体 "data1 data2 data3"

        "$@"就是以单个字符串输出"data1" "data2" "data3"

注:先将参数赋给变量后,然后再用循环去调用的时候不加""是以单个字符串形式

加了""是以整个字符串形式

 

-z,-n,!的区别

 -z 只可以在 [] 和 [[]] 中使用;为空就执行,识别 a="" 为空
if [[ -z $a ]]

 -n 只可以在 [] 和 [[]] 中使用;不为空就执行,识别 a="" 为空
if [[ -n $a ]]

! 表示取反,可以在 [] [[]] (()) 中都可以使用,识别 a="" 为空,效果与 -z 一样,! 使用更广泛一些
if ((! $a))

'' 和""的区别

1.单引号真的很单纯,只是把内容扩起来当成引号用。
2.双引号需要调用变量内容时候用,中间内容没有变量时候也可单纯的当引号用

let 和(())的区别

二者可以相互转化,二者都是可以将整数进行算数运算,输出的结果也都是整数,都不可接收浮点数,计算结果如果是小数也会转成整数(去小数位),而且写在其中的变量都可以不加$,但是let语句无法输出,双括号却可以输出通过$((a))的形式即可,这算是二者唯一的一个区别吧

$()和``的区别

二者主要是为了放置有输出的命令行,这样方便在 shell 中使用命令来扩展操作,都表示将命令的输出作为变量赋给某个新变量,二者可以替换。但在转义的时候反引号需要多加一个转义。

推荐使用$()因为``不太好识别,容易看错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值