Bash 使用sed将文本替换为2个由“/”分隔的串联变量
我有一个包含2个变量的脚本。其中一个变量是目录路径,另一个是用户输入变量。一旦用户输入变量(在本例中为证书名称),我将使用sed将xxxxx的文本替换为脚本路径(由/分隔)和certfile变量 在编程方面仍然是新手,但除了下面的问题之外,我已经设法让我的脚本正常工作了。我尝试过逃避变量,但似乎没有任何效果 我还尝试过更改sed使用的分隔符,但没有成功。我搜索了很多次,没有找到任何关于使用a/和连接变量的具体信息,所以如果这个问题已经解决了,请提前道歉Bash 使用sed将文本替换为2个由“/”分隔的串联变量,bash,variables,sed,concatenation,Bash,Variables,Sed,Concatenation,我有一个包含2个变量的脚本。其中一个变量是目录路径,另一个是用户输入变量。一旦用户输入变量(在本例中为证书名称),我将使用sed将xxxxx的文本替换为脚本路径(由/分隔)和certfile变量 在编程方面仍然是新手,但除了下面的问题之外,我已经设法让我的脚本正常工作了。我尝试过逃避变量,但似乎没有任何效果 我还尝试过更改sed使用的分隔符,但没有成功。我搜索了很多次,没有找到任何关于使用a/和连接变量的具体信息,所以如果这个问题已经解决了,请提前道歉 #!/bin/bash script_pa
#!/bin/bash
script_path=/opt/ceflog
read -p 'Enter the name of the certificate file: ' certfile
sed -e "s/pkcs12_file = xxxxxx/pkcs12_file = $script_path/$certfile/g" \$script_path/cef.conf
它应该是下面的样子
pkcs12_file = /opt/ceflog/192.168.1.1_1.pkcs12
一如既往地提前感谢您的帮助。我想您是想这样做的
$ path='/opt/ceflog'; cert='192.168.1.1_1.pkcs12';
$ echo pkcs12_file = xxxxxx/pkcs12_file |
sed -E 's~(pkcs12_file =) (xxxxxx/pkcs12_file)~\1 '"${path}/${cert}"'~'
pkcs12_file = /opt/ceflog/192.168.1.1_1.pkcs12
我在这里选择了一个不同于默认的sed分隔符/,因为您的数据中可能有它。所以看起来有两个问题。我避免了使用\$script\u path/cef.conf末尾的变量,并更改了sed的dilemeter,使其能够工作
sed -e "s|pkcs12_file = xxxxxx|pkcs12_file = $script_path/$certfile|g" $script_path/cef.conf
再次感谢各位。对不起,有什么问题吗?你在这里有很多事情要做,所以我建议在继续之前先做个准备。