+ -
当前位置:首页 → 问答吧 → [问]bash脚本for循环参数问题

[问]bash脚本for循环参数问题

时间:2010-04-10

来源:互联网

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

作者: 海贼的童话   发布时间: 2010-04-10

代码:
#!/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   发布时间: 2010-04-10

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"



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

作者: 海贼的童话   发布时间: 2010-04-10

帮你改了,复制上去

作者: JiangHui   发布时间: 2010-04-10

JiangHui 写道:
帮你改了,复制上去


啊,是哪里有问题呀,是否可以指教一下?

作者: 海贼的童话   发布时间: 2010-04-10

就是空格问题啊

作者: JiangHui   发布时间: 2010-04-10

JiangHui 写道:
就是空格问题啊


对不起,我还是没有看出来,抱歉
我明明是按照要求写的空格啊,就是把所有的一个栏目都要加上空格啦,难道有什么不同吗?

作者: 海贼的童话   发布时间: 2010-04-10

用vimdiff比较下两个文件

右边的中括号

作者: JiangHui   发布时间: 2010-04-10

摸拜慧慧

作者: pocoyo   发布时间: 2010-04-10

海贼的童话 写道:
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

作者: 海贼的童话   发布时间: 2010-04-10

附件:

2010-04-10-195637_896x302_scrot.png [ 15.79 KiB | 被浏览 286 次 ]



怎么可能直接执行就行,sh 方式就不行?
rpwt?

作者: JiangHui   发布时间: 2010-04-10

ls -l /bin/sh 是不是指向bash?难道是这个原因?

作者: JiangHui   发布时间: 2010-04-10

JiangHui 写道:
ls -l /bin/sh 是不是指向bash?难道是这个原因?

恩~~确实是的,我的
ls -l /bin/sh指向的是 dash 需要怎么更改呀?

作者: 海贼的童话   发布时间: 2010-04-11

重新软链接一下

作者: JiangHui   发布时间: 2010-04-11

JiangHui 写道:
重新软链接一下


它总是说该符号已经存在,是不是命令不对呀
ln -s /bin/sh bash

作者: 海贼的童话   发布时间: 2010-04-11