大家请帮忙看下这段SHELL代码有什么问题?

大家请帮忙看下这段SHELL代码有什么问题?

[code:1]
#!/bin/sh
#测试''(引号)的运用

SYS='uname -s'
eval $SYS
[/code:1]

#此处输出结果为 Linux,没错

[code:1]
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
[/code:1]

#上面这段代码竟然输出的是:
#erro!
#为什么?相当于将uname -s作为一个字符串输出来了
#但我的本意是输出"My system is Linux",
#试着改SYS="uname -s"也是一样的结果

[code:1]
if uname="Linux";then
echo "My system is Linux"
fi
[/code:1]

#此处直接执行命令,输出为My system is Linux
#没错
#但如果改成

[code:1]
if $SYS="Linux";then
echo "My system is Linux"
fi
[/code:1]

#后,就提示如下的出错信息:
#uname:无效选项 -- =
#请尝试执行‘uname --help’来获取更多信息
#############
#请高手指点一下,不甚感激。
想想eval在第一个中的作用,如果没有eval会是什么样呢?
签名好大
打开好慢
:neutral:
[quote:8efa61d9b9="zhy2111314"]想想eval在第一个中的作用,如果没有eval会是什么样呢?[/quote]

没有eval的话,就不会输出第一句:Linux
其他的完全是一样的。我刚刚试过。
谢谢解答。
ps:我把签名关掉。。。。。。
路过的高手,请帮个忙,谢谢了
[code:1]if $SYS="Linux";then[/code:1]

改为 ...

[code:1]if $SYS = "Linux";then[/code:1]

等号两边的玩意儿不要挨着那么紧, 空一格!
(不要问我为什么要空一格, 我不记得了, 自己翻书去吧)
[quote:f9dce483a2="bao_paul"][code:1]if $SYS="Linux";then[/code:1]

改为 ...

[code:1]if $SYS = "Linux";then[/code:1]

等号两边的玩意儿不要挨着那么紧, 空一格!
(不要问我为什么要空一格, 我不记得了, 自己翻书去吧)[/quote]

谢谢楼上。我试了还是不行,跟空格完全没有关系,还是一样的错误。我百思不得其解啊,为什么呢?
[quote:f68f3d53f5="ajingdd"]谢谢楼上。我试了还是不行,跟空格完全没有关系,还是一样的错误。我百思不得其解啊,为什么呢?[/quote]

怎么不行啊?? 我都试过了, 我这儿没问题啊!

把你的完整例子贴出来, 把你的错误信息贴出来, 完整的啊!
子西看一看case和eval的用法
这个应该与eval有关,你看下置顶的bash命令行处理详解,里面有eval的详细说明,我现在外面,回去后再给你试验一下!