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