Yan*_*hao 3 bash shell command-line
请看下面的命令:
administrator@ubuntu:~/usp$ cat file
c
b
a
administrator@ubuntu:~/usp$ x="cat file | sort"
administrator@ubuntu:~/usp$ $x
c
b
a
cat: |: ?????????
cat: sort: ?????????
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么$ x的输出不是:
a
b
c
Run Code Online (Sandbox Code Playgroud)
剂量双引号改变命令的行为cat file | sort?
发生的事情是$x作为单个命令执行.shell不是"重新解析"内容$x,因此它不是特别是设置重定向和产生sort.
什么情况是, cat被交给三个参数:file,|和sort.您没有名为|或sort在该目录中的文件,因此cat无法打开它们.(我猜这个错误说的是1.)
您可以通过运行获得预期的结果:
eval "$x"
Run Code Online (Sandbox Code Playgroud)
eval如果可以,我会避免使用它,这可能很危险.
1LC_ALL=在国际站点上寻求帮助之前,请使用命令前缀获取英语错误消息.
例如LC_ALL= $x.
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |