条件无法工作时Bash脚本
我不熟悉bash脚本。我今天写了这个小剧本。当我运行它时,它返回错误:./test1.sh:第8行:[n!=y]]:找不到命令。我试过几种不同的组合,但都没能成功条件无法工作时Bash脚本,bash,Bash,我不熟悉bash脚本。我今天写了这个小剧本。当我运行它时,它返回错误:./test1.sh:第8行:[n!=y]]:找不到命令。我试过几种不同的组合,但都没能成功 #!/bin/bash function ask_yes_or_no { local exitLoop="n" local answer="" while ["$exitLoop" != "y"]] do read -p "$1 (y/n)? " choice case "$choice"
#!/bin/bash
function ask_yes_or_no
{
local exitLoop="n"
local answer=""
while ["$exitLoop" != "y"]]
do
read -p "$1 (y/n)? " choice
case "$choice" in
y|Y )
answer="y"
exitLoop="y"
;;
n|N )
answer="y"
exitLoop="y"
;;
esac
done
echo $answer
}
retVal=$(ask_yes_or_no "Do you want to continue")
echo $retVal;
exit 0
如果你把我评论中的所有评论放在一起,并借助于,下面是第一个版本:
#!/bin/bash --
function ask_yes_or_no()
{
local exitLoop="n"
local answer=""
while [ "$exitLoop" != "y" ]
do
read -r -p "$1 (y/n)? " choice
case "$choice" in
y|Y )
answer="y"
exitLoop="y"
;;
n|N )
answer="n"
exitLoop="y"
;;
esac
done
echo $answer
}
retVal=$(ask_yes_or_no "Do you want to continue")
echo "$retVal";
exit 0
所以,你的第一次尝试几乎是好的。如评论中所述,while条件中有2个结尾]]而不是],并且有重要的空格字符需要添加。其余部分来自shellcheck(可以作为命令行安装)
测试如下:
chmod +x ./myscript.sh
./myscript.sh
Do you want to continue (y/n)? y
y
./myscript.sh
Do you want to continue (y/n)? n
n
while循环有2个结尾]]应该只有],此外还有空格,这一点非常重要:while[“$exitLoop”!=“y”]函数定义应该是函数ask_yes_或_no()。那工作。我决不会怀疑那些多余的空格会导致它出错。这是一种奇怪的语法。