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 @ 2024-02-19 09:17  小鲨鱼2018  阅读(7)  评论(0编辑  收藏  举报