【发布时间】:2019-03-27 17:37:15
【问题描述】:
我试着做脚本:
#!/bin/bash
cat test.txt
echo "Write del if you want delete or write save if you want save"
read s1
echo "Which symbol"
read s2
if [ $s1 = "del" ]
then
sed -i "/^$s2/d"
cat test.txt
if [ $s1 = "save" ]
then
echo "saved"
else
echo "Error"
fi cat test.txt
我有错误 - 语法错误:单词意外(期待“fi”) 请帮忙!
【问题讨论】:
-
将您的脚本粘贴到shellcheck.net 以检查语法错误。
-
您有两个
if,但只有一个fi,bash预计您打开的每个if都有一个fi;由于您的两个条件都是排他性的(如果另一个条件不正确,则一个不能为真),请考虑使用elif而不是您的第二个if,这也可以解决问题。 -
在声明
if [ $s1 = "del" ]中,您的引号完全错误。从文体上讲,你可能应该引用两个论点(if [ "$1" = "del" ](虽然我一直不明白为什么引号的文体论点没有让你写if "[" "$1" "=" "del" "]";),但如果你要少用引号,它们是del附近不需要,但$1附近需要。IOW,您应该将其更改为if [ "$1" = del ] -
我投票结束这个问题,因为它基于一个简单的语法错误。
标签: bash shell command-line scripting sh