时间: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
- 写脚本的时候一直纳闷为啥之前能用现在不能用了,搞了两个小时查出来问题了,记录下。