Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用sed将文本替换为2个由“/”分隔的串联变量_Bash_Variables_Sed_Concatenation - Fatal编程技术网

Bash 使用sed将文本替换为2个由“/”分隔的串联变量

Bash 使用sed将文本替换为2个由“/”分隔的串联变量,bash,variables,sed,concatenation,Bash,Variables,Sed,Concatenation,我有一个包含2个变量的脚本。其中一个变量是目录路径,另一个是用户输入变量。一旦用户输入变量(在本例中为证书名称),我将使用sed将xxxxx的文本替换为脚本路径(由/分隔)和certfile变量 在编程方面仍然是新手,但除了下面的问题之外,我已经设法让我的脚本正常工作了。我尝试过逃避变量,但似乎没有任何效果 我还尝试过更改sed使用的分隔符,但没有成功。我搜索了很多次,没有找到任何关于使用a/和连接变量的具体信息,所以如果这个问题已经解决了,请提前道歉 #!/bin/bash script_pa

我有一个包含2个变量的脚本。其中一个变量是目录路径,另一个是用户输入变量。一旦用户输入变量(在本例中为证书名称),我将使用sed将xxxxx的文本替换为脚本路径(由/分隔)和certfile变量

在编程方面仍然是新手,但除了下面的问题之外,我已经设法让我的脚本正常工作了。我尝试过逃避变量,但似乎没有任何效果

我还尝试过更改sed使用的分隔符,但没有成功。我搜索了很多次,没有找到任何关于使用a/和连接变量的具体信息,所以如果这个问题已经解决了,请提前道歉

#!/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

再次感谢各位。

对不起,有什么问题吗?你在这里有很多事情要做,所以我建议在继续之前先做个准备。