我有一个文件,其中有一些字段。例如,
var One = "fcb";
var Two = "abc";
我怎么能够更新/替换这些行使用脚本?
我希望能够做类似的事情:
echo -n "Enter One: "
read One
echo -n "Enter Two: "
read Two
sed -i $One ./file.js
sed -i $Two ./file.js
但是,当我执行脚本时:
Enter One: fge3
Enter Two: ghj5
表明:
sed: -e expression #1, char 1: unknown command: `f'
sed: -e expression #1, char 2: extra characters after command
答案1
sed 命令看起来像
sed -i -e 's/var One =.*/var One = "'$One'";/' -e 's/var Two =.*/var Two = "'$Two'";/' file.js
编辑添加:
当心陷阱...如果用户输入foo/bar
像答案这样的讨厌字符:-)
第二次编辑:
如果你不想允许坏角色那么你可以中止,例如在read One
你可以添加之后:
if [[ "$One" =~ "/" ]]; then echo bad char / not allowed; exit; fi
您可以为该sed
语句选择不同的字符(例如 a|
代替/
)并禁止这样做。
否则你需要尝试一些巧妙的引用......
One=$(echo "$One" | sed 's/\//\\\//g')