linux 脚本 引用变量,sed在shell脚本中引用变量方式大解剖

1 将单引号改双引号,(单引号不支持扩展)

[root@localhost ~]# a=123

[root@localhost ~]# echo "1" | sed 's/1/$a/g'

$a

[root@localhost ~]# A="123"

[root@localhost ~]# echo $A

123

[root@localhost ~]# echo "hello world" | sed  "s/hello/$A/g"

123 world

变量也可以用{}括起来:${变量}[root@localhost ~]# a=123

[root@localhost ~]# echo "1" | sed "s/1/${a}/g"

123

[root@localhost ~]#

不要单双引号

[root@localhost ~]# echo "1" | sed s/1/$a/g123

2 使用:'"$var"' , '$var' ,

[root@localhost ~]# a=123

[root@localhost ~]# echo 1 |sed 's/1/'$a'/g'

123

[root@localhost ~]# echo 1 |sed 's/1/'"$a"'/g'

123

对于网上有人一些说这样也可以:"'$var'"

[root@localhost ~]# echo 1 |sed 's/1/"'$a'"/g'

"123"    #使用“‘$var’”引用变量,但是引用的变量多了双引号,所以这种方法有点问题的

3 以上我们的变量a=123,变量的值是不带空格的,那我们用带空格的变量值,是否上面的方法可以?

[root@localhost ~]# a="hello world"  #带空格的变量

[root@localhost ~]# echo $ahello world

[root@localhost ~]# echo "1" | sed 's/1/'$a'/g'   #使用'$var'引用变量,但是提示有误

sed:-e 表达式 #1,字符 9:unterminated `s' command

[root@localhost ~]# echo "1" | sed s/1/$a/g     #什么都不带,也不要单双引号,提示有误

sed:-e 表达式 #1,字符 9:unterminated `s' command

[root@localhost ~]# echo "1" | sed s/1/"$a"/g   #语句不带单引号,变量用“$var”,成功

hello world

[root@localhost ~]# echo 1 |sed 's/1/"$a"/g'  #要是变量用“$var”,语句用单引号,被强制

"$a"

[root@localhost ~]# echo "1" | sed 's/1/'"$a"'/g'  #语句带单引号,变量用‘“$var”’,成功

hello world

[root@localhost ~]# echo 1 |sed s/1/'"$a"'/g   #语句不带引号,变量用‘“$var”’,被强制

"$a"

[root@localhost ~]# echo 1 |sed "s/1/'"$a"'/g"  #语句带双引号,变量用'"$var"',失败

'123'

[root@localhost ~]# echo "1" | sed 's/1/"'"$a"'"/g'   #语句带引号,变量用"'"$var"'" ,多引号

"hello world"

4 根据1,2,3,中的输出分析,发现引用变量时,变量是否带空格也是很重要的,所以我建议使用'"$var"' ,但是语句必须要用单引号[root@localhost ~]# echo 1 |sed 's/1/'"$a"'/g'

123

[root@localhost ~]# echo "1" | sed 's/1/'"$a"'/g'  #语句带单引号,变量用‘“$var”’,成功

hello world

[root@localhost ~]# echo|sed 's/^/'"$(date +"%Y%m%d")"'.rmvb_/g'

20150404.rmvb_

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值