Shell中$i $() ${}的区别
2019-09-26 本文已影响0人
JouyPub
shell中奇葩写法不仅仅是(.)、{.}、((.))等等写法,还有各种奇怪的写法和细节需要注意,一个不留神就发现结果和预期不一样
首先我们演示一个基本的
a = "b"
echo $a
结果是什么都没打印,正确写法是=
两边没有空格a="b"
认识到shell中的奇葩写法后,需要对各种写法有个基本的认识
- 不加括号,正常的取值方式,但是在引号中不好使。
- 单引号。原样输出,但仍然会解析${var}
- 双引号。会解析${var} 、$var和命令$(expr)
- ${}。取值操作
- 反引号`。当作命令执行
- $()。括号中的内容当做命令执行
然后我们再来看下这些写法的使用情况
i=i
# 正常的取值,1
echo $i
# 原样输出,$i
echo '$i'
# 正常取值,1
echo "$i"
# 正常取值,1
echo ${i}
# 当做命令执行
echo `date -d "1 days ago" +"%Y-%m-%d"`
# 当做命令执行
echo $(date -d "1 days ago" +"%Y-%m-%d")
再来一个同时有单引号和双引号的,这里就不能用$ds了,只能用${ds}
echo "insert overwrite table table_name partition (ds='${ds}') select distinct name from table_name_pre where ds='${ds}';"
欢迎订阅「K叔区块链」 - 专注于区块链技术学习
博客地址:http://www.jouypub.com
简书主页:https://www.jianshu.com/u/756c9c8ae984
segmentfault主页:https://segmentfault.com/blog/jouypub
腾讯云主页:https://cloud.tencent.com/developer/column/72548