Shell中$i $() ${}的区别

JouyPub

shell中奇葩写法不仅仅是(.)、{.}、((.))等等写法,还有各种奇怪的写法和细节需要注意,一个不留神就发现结果和预期不一样

首先我们演示一个基本的

a = "b"
echo $a

结果是什么都没打印,正确写法是=两边没有空格a="b"

认识到shell中的奇葩写法后,需要对各种写法有个基本的认识

  1. 不加括号,正常的取值方式,但是在引号中不好使。
  2. 单引号。原样输出,但仍然会解析${var}
  3. 双引号。会解析${var} 、$var和命令$(expr)
  4. ${}。取值操作
  5. 反引号`。当作命令执行
  6. $()。括号中的内容当做命令执行

然后我们再来看下这些写法的使用情况

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
阅读 817

jouypub.com
聊聊区块链,大数据,后端开发,前端开发

聊聊区块链、大数据、应用开发

513 声望
158 粉丝
0 条评论

聊聊区块链、大数据、应用开发

513 声望
158 粉丝
宣传栏