時間:2024.11.24
- 寫指令碼的時候發現一個關於sed引用變數的問題
變數中有空格時,賦值必須加引號
[root@centos7 ~]# var1=NoSpace
[root@centos7 ~]# var2=With Space
-bash: Space: command not found
[root@centos7 ~]# var2='With Space'
[root@centos7 ~]# var3="With Space"
[root@centos7 ~]# echo ${var1}
NoSpace
[root@centos7 ~]# echo ${var2}
With Space
[root@centos7 ~]# echo ${var3}
With Space
sed語句一對雙引號 " " 在最外側,直接 ${var} 引用變數 ,最方便
[root@centos7 ~]# echo 1 | sed -En "s/1/${var1}/p"
NoSpace
[root@centos7 ~]# echo 1 | sed -En "s/1/${var2}/p"
With Space
[root@centos7 ~]# echo 1 | sed -En "s/1/${var3}/p"
With Space
sed語句一對單引號 ' ' 在最外側,外單內雙 '"${var}"' 引用變數,通用性強
[root@centos7 ~]# echo 1 | sed -En 's/1/'"${var1}"'/p'
NoSpace
[root@centos7 ~]# echo 1 | sed -En 's/1/'"${var2}"'/p'
With Space
[root@centos7 ~]# echo 1 | sed -En 's/1/'"${var3}"'/p'
With Space
sed語句一對單引號 ' ' 在最外側, 三對單引號 '''${var}''' 引用變數,變數中含有空格會報錯,和變數賦值時使用 單引號'' 還是 雙引號"" 無關。
[root@centos7 ~]# echo 1 | sed -En 's/1/'''${var1}'''/p'
NoSpace
[root@centos7 ~]# echo 1 | sed -En 's/1/'''${var2}'''/p'
sed: -e expression #1, char 8: unterminated `s' command
[root@centos7 ~]# echo 1 | sed -En 's/1/'''${var3}'''/p'
sed: -e expression #1, char 8: unterminated `s' command
- 寫指令碼的時候一直納悶為啥之前能用現在不能用了,搞了兩個小時查出來問題了,記錄下。