拓展学习
想要更详细的了解,推荐大家看看《鸟哥的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"