所以我对Shell脚本很新,并尝试构建一个从.txt文件中删除一行的函数。
要明确我希望能够运行以下命令
$ ./script.sh searchTerm delete
哪个应该找到包含' searchTerm'并删除它。
我将$ 1(捕获searchTerm)传递给deletePassword函数但似乎无法使其工作。
会喜欢一些建议:)
#Delete a password
if [[ $2 == "delete" ]]; then
deletePassword $1
fi
function deletePassword () {
line=grep -Hrn $1 pwstore.txt
sed -n $line pwstore.txt
echo "Deleted that for you.."
}
运行上一个命令时出现以下错误:
sed: 1: "pwstore.txt": extra characters at the end of p command
答案 0 :(得分:2)
您的line
变量未按预期设置,因为您需要使用command substitution来捕获此类命令的结果。例如:
line=$(grep -Hrn $1 pwstore.txt)
我建议只使用sed
代替:
sed -i.bak "/$1/d" pwstore.txt
这将删除与pwstore.txt中$1
中存储的字符串匹配的所有行(并在pwstore.txt.bak创建原始文件的备份)