我在bash脚本中编写了这段代码。当我运行它时,提示符,"开始? [y / n]",但无论我回应什么,它都会关闭窗口。另外,if语句的正确语法是什么。
@echo off
set /p choice="Start? [y/n] "
echo $choice
echo $choice$
if $choice$ == "y"
then
goto Labelyes
fi
if $choice$ == "n"
then
exit
fi
:Labelyes
echo YAY
set /p goodbye="BYE"
if [1==1]; then exit; fi
谢谢!
答案 0 :(得分:0)
你的剧本通常是不正确的,所以想一想它为什么不起作用是没有意义的。
答案 1 :(得分:0)
如评论所示,您使用的语法更像是Microsoft Windows批处理(.bat
)文件。以下是对bash的转换。要查看read的语法,请键入help read
。
if
语句(阅读man bash
或this)的语法起初令人困惑。 [[
实际上是一个命令,它执行模式匹配,并显示了一个简单的示例。该模式只能位于=
的右侧。请注意,也可以使用==
,但标准说使用=
。
简单测试也可以使用test
命令或[
。算术测试使用((
。
goto
是一个四个字母的单词,不会在礼貌圈子中使用(有些人不同意)。
#!/usr/bin/env bash
#set /p choice="Start? [y/n] "
read -p "Start? [y/n] " choice
echo "$choice"
#echo $choice$
if [[ $choice = [Yy]* ]] # Accepts y, Y, yes, Yup, etc...
then
#goto Labelyes
echo YAY # Quotes are optional, but beware embedded whitespace
#set /p goodbye="BYE"
read -p "BYE" goodbye
elif [[ $choice == "n" ]] # Only n "elif" means "else if"
then
exit
else
# What happens if neither Y nor N were given?
echo "Invalid response, exiting anyway"
fi
#I have no idea what this is supposed to be for
#if [1==1]; then exit; fi
您可以使用case
语句,但在尝试之前先了解if
语句。