我正在尝试编写一个bash脚本(script.sh),来在input.sh文件中搜索和替换一些变量。但我只需要修改variable_list文件中存在的变量,而将其他变量保留不变。
variable_list
${user}
${dbname}
input.sh
username=${user}
password=${password}
dbname=${dbname}
期望的输出文件
username=oracle
password=${password} > This line won't be changed as this variable(${password}) is not in variable_list file
dbname=oracle
以下是我正在尝试使用的脚本,但我无法找到正确的sed表达式。
script.sh
export user=oracle
export password=oracle123
export dbname=oracle
variable='variable_list'
while read line ;
do
if [[ -n $line ]]
then
sed -i 's/$line/$line/g' input.sh > output.sh
fi
done < "$variable"
(mapcar (op list @1 (second [find vars @1 equal first])) entries)
的意思是“通过一个函数将entries
的元素映射到一个由变量和将该变量替换为var
列表中的结果组成的两个元素列表中。”[find vars @1 equal first]
意味着在使用equal
作为比较(适用于字符串)的情况下,在vars
中查找匿名函数(条目)的第一个参数(@1),并使用每个条目的第一个元素作为键(因为条目是两个元素列表,第一个元素是键)。find
返回一对,因此(second ...)
获取值。 - Kaz