Joh*_*ohn 5 sed shell-script quoting
我正在努力奔跑
sed -i "/$variable/c \$variable1' file.txt
Run Code Online (Sandbox Code Playgroud)
但它没有在文件中显示任何更改:file.txt.
但是相同的命令,没有变量可以正常工作:
sed -i "/variable/c \variable1' file.txt
Run Code Online (Sandbox Code Playgroud)
像这样做:
sed -i "/$variable/c \\${variable}1" file.txt
Run Code Online (Sandbox Code Playgroud)
变化:
如果在 a\之前有 a $,它会使 shell$在字符串中插入一个文字。而是放一个额外的\来转义第一个,这样 at\将被打印出来。
如果您的变量后面紧跟字母或数字,请将名称括起来,{...}这样可以将您的变量与不存在的变量区分开来variable1(如果变量不存在,shell 会将其扩展为空,而不是寻找较短的名称)。
与您的报价保持一致,您以 开始",所以不要以'! 无论如何,变量只能在双引号内展开。
请注意,为了调试此类事情,您可以使用echo,查看输出,下面的命令将显示出了什么问题:
echo sed -i "/$variable/c \$variable1" file.txt
Run Code Online (Sandbox Code Playgroud)
比较一下;
echo sed -i "/$variable/c \\${variable}1" file.txt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33294 次 |
| 最近记录: |