分页: 1 / 2

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

发表于 : 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怎么重现显示,就是我不小心把它从面板上删除了,现在无法切换网络状态了

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

发表于 : 2010-04-10 16:33
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"

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

发表于 : 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"

什么什么?是否可以解决?

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

发表于 : 2010-04-10 16:45
JiangHui
帮你改了,复制上去

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

发表于 : 2010-04-10 16:51
海贼的童话
JiangHui 写了:帮你改了,复制上去
啊,是哪里有问题呀,是否可以指教一下?

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

发表于 : 2010-04-10 16:52
JiangHui
就是空格问题啊 :em20

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

发表于 : 2010-04-10 17:06
海贼的童话
JiangHui 写了:就是空格问题啊 :em20
对不起,我还是没有看出来,抱歉
我明明是按照要求写的空格啊,就是把所有的一个栏目都要加上空格啦,难道有什么不同吗?

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

发表于 : 2010-04-10 17:08
JiangHui
用vimdiff比较下两个文件

右边的中括号

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

发表于 : 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

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

发表于 : 2010-04-10 20:00
JiangHui
2010-04-10-195637_896x302_scrot.png
怎么可能直接执行就行,sh 方式就不行?
rpwt?

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

发表于 : 2010-04-10 20:03
JiangHui
ls -l /bin/sh 是不是指向bash?难道是这个原因?

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

发表于 : 2010-04-11 9:32
海贼的童话
JiangHui 写了:ls -l /bin/sh 是不是指向bash?难道是这个原因?
恩~~确实是的,我的
ls -l /bin/sh指向的是 dash 需要怎么更改呀?

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

发表于 : 2010-04-11 9:40
JiangHui
重新软链接一下

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

发表于 : 2010-04-11 10:05
海贼的童话
JiangHui 写了:重新软链接一下
它总是说该符号已经存在,是不是命令不对呀
ln -s /bin/sh bash

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

发表于 : 2010-04-11 10:10
JiangHui
敲反了


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