【发布时间】:2014-04-24 17:28:50
【问题描述】:
家庭作业 - 不要只是给我一个答案,但我确实被困在这个问题上好几天了。这也解释了为什么我坚持使用 csh,这当然会加剧问题。
shell 脚本需要在文件中搜索字符串并将其替换为新字符串,如果已找到该字符串且文件已被更改,则创建一个备份文件。够简单吧?
这是我的代码。
#!/bin/csh
set currentWord=$1
set newWord=$2
set fileName=$3
#sed -i.bak -e "s/$1/$2/g" $3
if (grep -q $1 $3) then
sed -i.bak -e "s/$1/$2/g" $3
else
echo "The string is not found."
endif
我遇到的问题是它不应该“触摸”文件,除非找到字符串。我一直在这样做的方式以任何一种方式创建文件,有时它们最终只是相同的文件。我也尝试过只使用一个 sed 命令,但我最接近解决方案的方法是将 sed 命令放入 if then else 中。现在我收到“if 表达式语法”错误 - 这让我觉得我根本不能使用 grep,需要重新格式化它或使用其他东西。
【问题讨论】: