Chinaunix

标题: shell变量中的ls *部分被执行了? [打印本页]

作者: 光速    时间: 2017-12-13 17:13
标题: shell变量中的ls *部分被执行了?
a='echo $ ? $ * ; ls * | wc '
然后:echo $a
结果字符串中的 ls * 被执行了,列出了全部文件?
本意就是想让ls *为字符串的一部分,不让其执行;


作者: boobie    时间: 2017-12-13 17:29
本帖最后由 boobie 于 2017-12-13 17:37 编辑

]# a="echo $? $*;ls "*"|wc"
# echo $a
echo 0 ;ls *|wc

这样?
还是这样?
# a='echo $? $* ; "ls *" | wc '
# echo $a
echo $? $* ; "ls *" | wc


作者: 龙牙地主天    时间: 2017-12-13 17:36
本帖最后由 龙牙地主天 于 2017-12-13 17:38 编辑

将变量引起来。

[root@rcyang ~]# a=$(echo "$ ? $ * ; ls * | wc")
[root@rcyang ~]#
[root@rcyang ~]# echo "$a"
$ ? $ * ; ls * | wc
[root@rcyang ~]#


[root@rcyang ~]# a='echo "$ ? $ * ; ls * | wc"'
[root@rcyang ~]#
[root@rcyang ~]# echo "$a"
echo "$ ? $ * ; ls * | wc"
[root@rcyang ~]#


作者: wh7211    时间: 2017-12-14 16:40
回复 1# 光速


  1. a='echo $ ? $ * ; ls * | wc '
  2. echo "$a"
复制代码

输出:
echo $ ? $ * ; ls * | wc

作者: 光速    时间: 2017-12-15 13:36
本帖最后由 光速 于 2017-12-15 14:34 编辑

回复 4# wh7211

变量不加双引号为什么就会执行其中的“*”?


作者: 本友会机友会摄友会    时间: 2017-12-15 13:53
提示: 作者被禁止或删除 内容自动屏蔽
作者: wh7211    时间: 2017-12-17 17:07
回复 5# 光速


*在shell命令行中是shell扩展,所以要加双引号。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2