4

在 bash 脚本文件中,我设置了一个变量,如下所示:

    current_path=`pwd`
    sed -i "1s/.*/working_path='$current_path';/" file1.sh

我想运行这个脚本来替换file1.shinto的第一行working_path='$current_path';,但是在命令中current_path/and是在替换模式中预定义的。我试过这个:sed/sed

    current_path1="${current_path/\//\\\/}"

上面这行,我想把/in 变量替换current_path\/,然后把 in 输入current_path1sed命令中,也报错。

请给我一些建议好吗?谢谢。

4

3 回答 3

7

尝试这个。

sed -i -e "1s@.*@working_path='$current_path';@" file1.sh

在替换命令中使用@代替。/

于 2013-10-29T01:23:24.517 回答
2

s///您可以为命令使用不同的分隔符:

current_path=`pwd`
sed -i "1s|.*|working_path='$current_path';|" file1.sh

但是您并没有真正在这里搜索和替换,而是要插入新行并删除旧行:

current_path=`pwd`
sed -i -e "1i\working_path='$current_path)';" -e 1d file1.sh

你真的在改变.sh文件的第一行吗?你要删除she-bang行吗?

于 2013-10-29T01:26:20.240 回答
0

请在模式字符串的开头添加一个“/”。它用字符串替换所有匹配的模式。

 current_path1="${current_path//\//\\\/}"
于 2013-10-29T01:32:36.343 回答