求助一个关于中括号条件判断式的问题

sh/bash/dash/ksh/zsh等Shell脚本
海贼的童话
帖子: 42
注册时间: 2009-12-31 20:16

求助一个关于中括号条件判断式的问题

#1

帖子 海贼的童话 » 2010-04-10 16:28

还是编shell的新手,今天试编了一下shell程序,可是在中括号的条件判断是中出现了问题

代码: 全选

#!/bin/bash
# program:
#	This program will show the user's choice
# History:
#	2010/4/10	susu 	First release
PATH=:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
read -p "Please input choice: " choice
[ "$choice" == "Y" -o "$choice" == "y"]  &&echo "Ok,continue" &&exit 0这里的空格符号,我非常注意了,就是每个部分中间都要有空格
[ "$choice" == "N" -o "$choice" == "n"]  &&echo "Oh,interrupt" &&exit 0
echo "I don't know what is your choice"
可是确出现如下问题
Please input choice: n
./sh06.sh: line 10: [n:找不到命令
./sh06.sh: line 11: [n:找不到命令
I don't know what is your choice
请大牛解答,再问个小问题,就是面板上面的nm-applet怎么重现显示,就是我不小心把它从面板上删除了,现在无法切换网络状态了
JiangHui
论坛版主
帖子: 21308
注册时间: 2007-08-02 20:29
系统: 窓辺とうこ

Re: 求助一个关于中括号条件判断式的问题

#2

帖子 JiangHui » 2010-04-10 16:33

代码: 全选

#!/bin/bash
# program:
#   This program will show the user's choice
# History:
#   2010/4/10   susu    First release
PATH=:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
read -p "Please input choice: " choice
[ "$choice" == "Y" -o "$choice" == "y" ]  &&echo "Ok,continue" &&exit 0 #这里的空格符号,我非常注意了,就是每个部分中间都要有空格
[ "$choice" == "N" -o "$choice" == "n" ]  &&echo "Oh,interrupt" &&exit 0
echo "I don't know what is your choice"
海贼的童话
帖子: 42
注册时间: 2009-12-31 20:16

Re: 求助一个关于中括号条件判断式的问题

#3

帖子 海贼的童话 » 2010-04-10 16:44

JiangHui 写了:

代码: 全选

#!/bin/bash
# program:
#   This program will show the user's choice
# History:
#   2010/4/10   susu    First release
PATH=:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
read -p "Please input choice: " choice
[ "$choice" == "Y" -o "$choice" == "y" ]  &&echo "Ok,continue" &&exit 0 #这里的空格符号,我非常注意了,就是每个部分中间都要有空格
[ "$choice" == "N" -o "$choice" == "n" ]  &&echo "Oh,interrupt" &&exit 0
echo "I don't know what is your choice"

什么什么?是否可以解决?
JiangHui
论坛版主
帖子: 21308
注册时间: 2007-08-02 20:29
系统: 窓辺とうこ

Re: 求助一个关于中括号条件判断式的问题

#4

帖子 JiangHui » 2010-04-10 16:45

帮你改了,复制上去
海贼的童话
帖子: 42
注册时间: 2009-12-31 20:16

Re: 求助一个关于中括号条件判断式的问题

#5

帖子 海贼的童话 » 2010-04-10 16:51

JiangHui 写了:帮你改了,复制上去
啊,是哪里有问题呀,是否可以指教一下?
JiangHui
论坛版主
帖子: 21308
注册时间: 2007-08-02 20:29
系统: 窓辺とうこ

Re: 求助一个关于中括号条件判断式的问题

#6

帖子 JiangHui » 2010-04-10 16:52

就是空格问题啊 :em20
海贼的童话
帖子: 42
注册时间: 2009-12-31 20:16

Re: 求助一个关于中括号条件判断式的问题

#7

帖子 海贼的童话 » 2010-04-10 17:06

JiangHui 写了:就是空格问题啊 :em20
对不起,我还是没有看出来,抱歉
我明明是按照要求写的空格啊,就是把所有的一个栏目都要加上空格啦,难道有什么不同吗?
JiangHui
论坛版主
帖子: 21308
注册时间: 2007-08-02 20:29
系统: 窓辺とうこ

Re: 求助一个关于中括号条件判断式的问题

#8

帖子 JiangHui » 2010-04-10 17:08

用vimdiff比较下两个文件

右边的中括号
海贼的童话
帖子: 42
注册时间: 2009-12-31 20:16

Re: 求助一个关于中括号条件判断式的问题

#9

帖子 海贼的童话 » 2010-04-10 19:48

海贼的童话 写了:
JiangHui 写了:

代码: 全选

#!/bin/bash
# program:
#   This program will show the user's choice
# History:
#   2010/4/10   susu    First release
PATH=:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
read -p "Please input choice: " choice
[ "$choice" == "Y" -o "$choice" == "y" ]  &&echo "Ok,continue" &&exit 0 #这里的空格符号,我非常注意了,就是每个部分中间都要有空格
[ "$choice" == "N" -o "$choice" == "n" ]  &&echo "Oh,interrupt" &&exit 0
echo "I don't know what is your choice"

什么什么?是否可以解决?
我刚刚发现一个问题,就是加上可执行的属性后,./sh06.sh(这个文件时这个名字)完全正常
但是如果继续用sh sh06.sh就会重新出现那个问题,请问这是怎么回事?
如下所示
Please input choice: Y
Ok,continue
susu@susu17:29:38:~/scripts$ ./sh06.sh
Please input choice: N
Oh,interrupt
susu@susu17:29:41:~/scripts$ sh sh06.sh
Please input choice: y
[: 10: y: unexpected operator
[: 11: y: unexpected operator
I don't know what is your choice
JiangHui
论坛版主
帖子: 21308
注册时间: 2007-08-02 20:29
系统: 窓辺とうこ

Re: 求助一个关于中括号条件判断式的问题

#10

帖子 JiangHui » 2010-04-10 20:00

2010-04-10-195637_896x302_scrot.png
怎么可能直接执行就行,sh 方式就不行?
rpwt?
JiangHui
论坛版主
帖子: 21308
注册时间: 2007-08-02 20:29
系统: 窓辺とうこ

Re: 求助一个关于中括号条件判断式的问题

#11

帖子 JiangHui » 2010-04-10 20:03

ls -l /bin/sh 是不是指向bash?难道是这个原因?
海贼的童话
帖子: 42
注册时间: 2009-12-31 20:16

Re: 求助一个关于中括号条件判断式的问题

#12

帖子 海贼的童话 » 2010-04-11 9:32

JiangHui 写了:ls -l /bin/sh 是不是指向bash?难道是这个原因?
恩~~确实是的,我的
ls -l /bin/sh指向的是 dash 需要怎么更改呀?
JiangHui
论坛版主
帖子: 21308
注册时间: 2007-08-02 20:29
系统: 窓辺とうこ

Re: 求助一个关于中括号条件判断式的问题

#13

帖子 JiangHui » 2010-04-11 9:40

重新软链接一下
海贼的童话
帖子: 42
注册时间: 2009-12-31 20:16

Re: 求助一个关于中括号条件判断式的问题

#14

帖子 海贼的童话 » 2010-04-11 10:05

JiangHui 写了:重新软链接一下
它总是说该符号已经存在,是不是命令不对呀
ln -s /bin/sh bash
JiangHui
论坛版主
帖子: 21308
注册时间: 2007-08-02 20:29
系统: 窓辺とうこ

Re: 求助一个关于中括号条件判断式的问题

#15

帖子 JiangHui » 2010-04-11 10:10

敲反了


不知道改了Ubuntu默认sh会不会有什么难以预料的问题,bash 06.sh 也是一样
回复