鸟哥 Linux 私房菜里的一个 shellscript 例题。但是执行的时候发生错误,求指导。

2014-12-08 20:52:15 +08:00
 commoccoom
1 #!/bin/bash
2 #Porgram
3 # This program shows the user's choice.
4 #History
5 #2014/12/08
6 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
7 export PATH
8
9 read -p "Please input (Y/n):" yn
10 [ "$yn" == "Y" -o "$yn" == "y" ] && echo "OK.continue" && exit 0
11 [ "$yn" == "N" -o "$yn" == "n" ] && echo "Oh,interrupt!" && exit 0
12 echo "I don't know what your choice is" && exit 0
13


完全按照书上写的,但是运行错误。

root@default:~/shell# sh sh06.sh
Please input (Y/n):y
sh06.sh: 10: [: y: unexpected operator
sh06.sh: 11: [: y: unexpected operator
I don't know what your choice is
root@default:~/shell#
2748 次点击
所在节点    问与答
12 条回复
adjusted
2014-12-08 21:27:09 +08:00
你确定你都输入对了?看不出什么问题啊。。。
kidlj
2014-12-08 21:27:44 +08:00
是这样的,因为你执行这个脚本用的 `/bin/sh`,而不是 `/bin/bash`,sh 是不支持 `==` 这个比较操作符的,它用 `=` 代表等于。你没看错,这就是POSIX标准。

而bash是支持`==`操作的。所以你可以:

- 用 bash 来执行这个脚本

- 如果非要用 sh 来执行,那么就把`==` 改成 `=`


另外不要用`root`来实验和执行脚本呢?这样是很危险的。
ZircoN
2014-12-08 21:33:48 +08:00
直接 ./sh06.sh 试试 楼上貌似正解。
adjusted
2014-12-08 21:36:27 +08:00
怎么记得sh是link到bash的...
caixiexin
2014-12-08 21:39:47 +08:00
我发现好像是空格问题你的脚本==左右两边是不是有空格?我把你的拷贝下来,去掉==两边的空格是能运行的
commoccoom
2014-12-08 21:40:16 +08:00
@kidlj
感谢!

因为是个用来扶墙的微型VPS,只装了SS,所以就用root了 ,挂了就重装~。~
bitwing
2014-12-08 21:46:19 +08:00
@adjusted Debian 系的某些是链接到 dash 的......
nealfeng
2014-12-08 21:48:38 +08:00
@commoccoom 本地虚拟机就好了,何必上vps折腾学linux
commoccoom
2014-12-08 21:54:31 +08:00
@caixiexin
去掉空格后确实行了。另外2楼的方法也是行的。

但是鸟哥在书上还强调要加空格~。~
commoccoom
2014-12-08 21:57:20 +08:00
@nealfeng
手机端装个SSH客户端能登录VPS,利用点碎时间看看脚本什么的~。~
caixiexin
2014-12-08 22:08:38 +08:00
@commoccoom 要看你看的书是第几版了,之前买的时候就看书评有人说新版排版有问题,有几个示例脚本会多空格导致脚本执行错误,所以就拿你发的试了一下,没想到你果然被书坑了2333
Muninn
2014-12-08 22:52:44 +08:00
主要要看sh被链接到啥了...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/152446

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX