shell中的双引号与$

拓展学习

想要更详细的了解,推荐大家看看《鸟哥的Linux私房菜 基础学习篇(第三版)》中第11章认识和学习BASH的变量讲解部分

什么时候用双引号

当参数值本身就带有空格时,如果不加双引号把参数值括起来,那么这个参数值可能会被扩展为多个参数值,而丢失原本的完整值。

建议传参时每个参数都使用双引号括起来。

例子:
比如在脚本中执行bin/hive -e命令
假设:sql="select * from table group by id;"

不能使用bin/hive -e $sql,而要使用bin/hive -e "$sql"。因为第一种方式相当于执行bin/hive -e select * from table group by id;那么其实解析命令时候会以为有个多参数。而第二种命令实际上是bin/hive -e "select * from table group by id;",即将整体看作一个参数。


$要不要跟{}

大括号 {} 的作用是限定大括号里面的字符串是一个整体,不会跟相邻的字符组合成其他含义。推荐使用${}可以避免一些不必要的错误。


字符串中的变量怎么才能被正确解析?

将字符串用双引号括起来,这样才能保证变量被解析,同时变量正常表示就行,不用做额外操作

"SELECT avg_download_speed_bytes_s FROM origin_$tableName"

如果不是变量,只是形如变量即长成这样的字符串"$xxxx",想要正确输出$xxxx,就要在$前面加上转义字符\

例子:
在这里插入图片描述

这在sqoop的–query中有很好的体现,即$CONDITIONS前面必须加上转义字符,变量就正常使用。

--query "SELECT id FROM $tableName WHERE \$CONDITIONS" 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值