各位大虾,请1帮忙改错...

sh/bash/dash/ksh/zsh等Shell脚本
回复
youxia1873
帖子: 49
注册时间: 2010-09-12 15:04

各位大虾,请1帮忙改错...

#1

帖子 youxia1873 » 2010-09-13 23:56

脚本:
#testlogin.sh
username=""
password=""
Prompt
read username
while[$username !="Q"]
do
if [$username!=""]
echo -n "password for $username:"
stty -echo
read password
stty echo
case $username in
root)
echo "hello, root. your password is \"$password\",be careful not to let out your password :)"
;;
*)
echo "hello. $username. your password is \"$password\"."
;;
esac
echo "welcome to the system"
fi
Prompt
read username
done
Prompt()
{
echo "login emulation (Type 'Q' to quit)"
echo -n "login:"
}
——————————————————————————————————————————————————
pangyang@pangyang-desktop:~$ ./testlogin.sh
./testlogin.sh: line 4: Prompt:找不到命令

./testlogin.sh: line 6: while[ !=Q]:找不到命令
./testlogin.sh: line 7: 在未预料的“do”附近出现语法错误
./testlogin.sh: line 7: ` do '
头像
cnkilior
论坛版主
帖子: 4984
注册时间: 2007-08-05 17:40

Re: 各位大虾,请1帮忙改错...

#2

帖子 cnkilior » 2010-09-14 0:09

1、定义放在调用前
2、[]要空格
youxia1873
帖子: 49
注册时间: 2010-09-12 15:04

Re: 各位大虾,请1帮忙改错...

#3

帖子 youxia1873 » 2010-09-14 1:04

改过,还是有错误:
#testlogin.sh
username=""
password=""

Prompt()
{
echo "login emulation (Type 'Q' to quit)"
echo -n "login:"
}
Prompt
read username
while [ $username !="Q" ]
do
if [$username!=""]
echo -n "password for $username:"
stty -echo
read password
stty echo
case $username in
root)
echo "hello, root. your password is \"$password\",be careful not to let out your password :)"
;;
*)
echo "hello. $username. your password is \"$password\"."
;;
esac then
echo "welcome to the system"
fi
Prompt
read username
done
——————————————————————————————————————————————
pangyang@pangyang-desktop:~$ sh testlogin.sh
login emulation (Type 'Q' to quit)
login:root
[: 31: root: unexpected operator
sai9924
帖子: 5
注册时间: 2010-09-08 23:26

Re: 各位大虾,请1帮忙改错...

#4

帖子 sai9924 » 2010-09-14 12:26

if [$username!=""] 空格
youxia1873
帖子: 49
注册时间: 2010-09-12 15:04

Re: 各位大虾,请1帮忙改错...

#5

帖子 youxia1873 » 2010-09-14 12:56

sai9924, 空格我全换过来了,还是没用。
[: 31: root: unexpected operator
这是什么错?
sai9924
帖子: 5
注册时间: 2010-09-08 23:26

Re: 各位大虾,请1帮忙改错...

#6

帖子 sai9924 » 2010-09-14 13:15

#testlogin.sh
username=""
password=""

Prompt()
{
echo "login emulation (Type 'Q' to quit)"
echo -n "login:"
}
Prompt
read username
while [ "$username" != "Q" ]
do
if [ "$username" != "" ]
echo -n "password for $username:"
stty -echo
read password
stty echo
case $username in
root )
echo "hello, root. your password is \"$password\",be careful not to let out your password "
;;
* )
echo "hello. $username. your password is \"$password\"."
;;

esac then
echo "welcome to the system"
fi
Prompt
read username
done
youxia1873
帖子: 49
注册时间: 2010-09-12 15:04

Re: 各位大虾,请1帮忙改错...

#7

帖子 youxia1873 » 2010-09-14 20:00

sai9924, 谢谢,问题解决了,非常开心。不过你改了哪里呀?
回复