大家请帮忙看下这段SHELL代码有什么问题?
#!/bin/sh
#测试''(引号)的运用
SYS='uname -s'
eval $SYS
#此处输出结果为 Linux,没错
case $SYS in
'uname -s')
echo "erro!"
;;
"Linux")
echo "My system is Linux"
;;
"Windows")
echo "My system is Windows"
;;
Unix)
echo "My system is Unix"
;;
*)
echo "Unknown: "
;;
esac
#上面这段代码竟然输出的是:
#erro!
#为什么?相当于将uname -s作为一个字符串输出来了
#但我的本意是输出"My system is Linux",
#试着改SYS="uname -s"也是一样的结果
if uname="Linux";then
echo "My system is Linux"
fi
#此处直接执行命令,输出为My system is Linux
#没错
#但如果改成
if $SYS="Linux";then
echo "My system is Linux"
fi
#后,就提示如下的出错信息:
#uname:无效选项 -- =
#请尝试执行‘uname --help’来获取更多信息
#############
#请高手指点一下,不甚感激。 想想eval在第一个中的作用,如果没有eval会是什么样呢? 签名好大
打开好慢
:neutral: 想想eval在第一个中的作用,如果没有eval会是什么样呢?
没有eval的话,就不会输出第一句:Linux
其他的完全是一样的。我刚刚试过。
谢谢解答。
ps:我把签名关掉。。。。。。 路过的高手,请帮个忙,谢谢了 if $SYS="Linux";then
改为 ...
if $SYS = "Linux";then
等号两边的玩意儿不要挨着那么紧, 空一格!
(不要问我为什么要空一格, 我不记得了, 自己翻书去吧) if $SYS="Linux";then
改为 ...
if $SYS = "Linux";then
等号两边的玩意儿不要挨着那么紧, 空一格!
(不要问我为什么要空一格, 我不记得了, 自己翻书去吧)
谢谢楼上。我试了还是不行,跟空格完全没有关系,还是一样的错误。我百思不得其解啊,为什么呢? 谢谢楼上。我试了还是不行,跟空格完全没有关系,还是一样的错误。我百思不得其解啊,为什么呢?
怎么不行啊?? 我都试过了, 我这儿没问题啊!
把你的完整例子贴出来, 把你的错误信息贴出来, 完整的啊! 子西看一看case和eval的用法 这个应该与eval有关,你看下置顶的bash命令行处理详解,里面有eval的详细说明,我现在外面,回去后再给你试验一下!
页:
[1]