linux shell 中双方引号和单方引号的区别

 

通常更推荐使用双方引号。

 

001、双方引号可以避免变量的单词分割

[root@pc1 test1]# str1="aa bb"             ## 测试字符串
[root@pc1 test1]# if [[ $str1 == "aa bb" ]]; then echo "yes"; fi  ## 双边引号不用担心变量的单词分割
yes
[root@pc1 test1]# if [ $str1 == "aa bb" ]; then echo "yes"; fi    ## 单边引号发生单词分割
-bash: [: too many arguments
[root@pc1 test1]# if [ "$str1" == "aa bb" ]; then echo "yes"; fi  ## 单边引号如果想避免单词分割,需要使用双引号
yes

 

002、双边引号支持高级正则表达; 单边引号不支持

[root@pc1 test1]# if [[ aabb == aab? ]]; then echo "yes"; fi  ## 双边引号支持高级正则表达
yes
[root@pc1 test1]# if [ aabb == aab? ]; then echo "yes"; fi    ## 单边引号不支持高级正则表达

 

003、双边括号内支持逻辑运算; 单边括号内不支持逻辑运算

[root@pc1 test1]# if [[ 5 -gt 3 && 5 -gt 2 ]]; then echo "yes"; fi    ## 双边括号支持括号内逻辑判断
yes
[root@pc1 test1]# if [ 5 -gt 3 && 5 -gt 2 ]; then echo "yes"; fi      ## 单边引号不支持
-bash: [: missing `]'
[root@pc1 test1]# if [ 5 -gt 3 ] && [ 5 -gt 2 ]; then echo "yes"; fi  ## 单边引号的逻辑判断需要每次都写一遍单边引号 
yes

 。

 

reference:

01、https://mp.weixin.qq.com/s?__biz=Mzg4ODA5NDEwNw==&mid=2247484460&idx=1&sn=3b8cfb3b7abae5786fedc566af8b8ca3&chksm=cf8128d8f8f6a1ce418bd57279b5f77229109a0b4a20cb8ac98d486a3fcf0dd92194114dd745&mpshare=1&scene=23&srcid=0218Bdmvr3i7C9I12KcBQL4F&sharer_shareinfo=80bc41709169b59aedebe9057c0d1b09&sharer_shareinfo_first=80bc41709169b59aedebe9057c0d1b09#rd

 

posted @   小鲨鱼2018  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示