问题
This is my script:
echo "Name"
read name
if [ "$name" == "abcd" ]; then
echo "Password"
read password
if [ "$password == "pwd" ]; then
echo "Hello"
else
echo "Wrong password"
fi
else
echo "wrong username"
fi
And this is the output I get when I run it:
sh hello.sh Name abcd hello.sh: line 14: unexpected EOF while looking for matching `"' hello.sh: line 16: syntax error: unexpected end of file
Any idea whats wrong here? This could be a very silly one, but i wasted almost an hour on it.
回答1:
if [ "$password == "pwd" ]; then
You have an unmatched "
before $password
回答2:
you can use case
. Here's an example. You won't want to tell anybody which component is wrong, for security reason.
echo "Name"
read name
echo "Password"
read password
case "${name}${password}" in
"abcdpwd" )
echo "hello";;
*) echo "User or password is wrong";;
esac
回答3:
In Shell script.
if condition
then
if condition
then
.....
..
do this
else
....
..
do this
fi
else
...
.....
do this
fi
回答4:
if [ "$name" == "abcd" ];
then
echo "Password"
read password
if [ "$password" == "pwd" ];
then
echo "Hello"
else
echo "Wrong password"
fi
else
echo "wrong username"
fi
来源:https://stackoverflow.com/questions/5726839/nested-if-statements-in-shell-scripting