Shell 将变量值从一个文件写入另一个文件

Shell 将变量值从一个文件写入另一个文件,shell,Shell,我试图从test.sh读取一个变量值,并通过替换file2.txt中的COMP一词将其写入file2.txt 我使用下面的命令来实现这一点,但不可能 sed -r 's/(echo "$NAME" test.sh)/COMP/' file2.txt 供参考 test.sh包含 #!/bin/bash NAME=RAJ 要从文件中读取变量,可以使用源或命令。然后使用双引号使shell展开变量,同时保留空格: source test.sh && sed -i

我试图从test.sh读取一个变量值,并通过替换file2.txt中的COMP一词将其写入file2.txt

我使用下面的命令来实现这一点,但不可能

sed -r 's/(echo "$NAME" test.sh)/COMP/' file2.txt
供参考

test.sh包含

#!/bin/bash
NAME=RAJ

要从文件中读取变量,可以使用
命令。然后使用双引号使shell展开变量,同时保留空格:

source test.sh && sed -i "s/$NAME/COMP/g" file2.txt
BSD sed命令采用
-i
选项,但需要备份后缀(但允许使用空后缀)。因此,如果您在Mac或BSD系统上运行,请使用:

source test.sh && sed -i '' "s/$NAME/COMP/g" file2.txt

我想你的sed
s///
倒过来了。您想搜索
COMP
并替换
$NAME

。test.sh
sed“s/COMP/$NAME/”file2.txt
如果$NAME可以包含斜杠字符,它将中断sed的
s//
命令,因此需要在变量展开中转义斜杠

。test.sh
替换=${NAME/\/\/\\/}
sed“s/COMP/$replacement/”file2.txt
#NAME='a/b/c/d'
#回音“${NAME/\/\/\/\\/}”\=>a\/b\/c\/d

谢谢您的回答@1218985,但它不起作用。我希望在单行命令中实现,您能否建议我以下格式的答案sed-i“s/(source test.sh |$NAME)/COMP/g”文件2。txt@k4jc您可以执行source test.sh&&sed-i“s/$NAME/COMP/g”file2.txt如果您需要一行,我可以使用source命令,如果我在test.sh文件中有多个变量,并且所有这些变量值都要写入.txt文件