我对 sed 脚本完全陌生。我想制作一个脚本,以便它要求用户输入要插入文件中的值。我找不到正确的代码
所以我在文本文件中的行看起来像这样
path =
我想输入用户的路径,因此该行如下所示:
path = /dev
通过反复试验我只有:
read -p "Enter path name: " PT
echo "$( sed -i '/path/ s/.*/& $PT/' textfile )"
这使
path = $PT
你能帮我提供正确的代码吗
答案1
单引号内不会发生变量扩展,请改用双引号。
+ 因为你的变量将包含/
作为路径的一部分。对于 GNU,sed
您应该使用不同的替换分隔符。
read -p "Enter path name: " PT
sed -i "\#path# s#.*#& $PT#" infile
答案2
read -p "Enter path name: " PT
sed -i "/path/ s#.*#& $PT#" textfile
您需要使用双引号,而不是单引号。单引号保护字符串免受 shell 的影响,但在这种情况下,您希望 shell 扩展 的值$PT
。
还,
echo "$( ... )"
...
与( 中的内容)相同$( ... )
。