Linux:$()和()都能执行指令,有什么区别呢?

发布网友 发布时间:2022-04-23 07:41

我来回答

3个回答

热心网友 时间:2022-06-17 20:37

用括号执行是有子shell

( MYPARAM=test;echo $MYPARAM;ls) ;echo $MYPARAM

会发现test只打印了一次,外面的这个echo $MYPARAM没有输出。即子SHELL中定义的变量在外层是看不到的

输出:
test
1.gz 2.gz

适用于想要一个单独的SHELL环境的情况。

$( MYPARAM=test;echo $MYPARAM;ls)则会直接报错

bash: test: 1.gz: unary operator expected

正常不会用$()执行命令

热心网友 时间:2022-06-17 20:37

$()是把取括号里面的命令的输出。比如
files=$(ls)
()只是执行括号里面的命令

追问大哥
能再详细点儿吗
我还是有些扭捏~

追答

你对于()的理解是对的。 

而$()呢, 就是得到括号里的命令的输出, 然后可以赋值给变量。 还是那个例子:

files=$(ls)
echo $files

files是个变量 ,用它来存储ls的结果。 

热心网友 时间:2022-06-17 20:37

需要分情况:
1、
file=$(ls /tmp) 这里$file是字符串
file = (ls /tmp) 这里$file是数组
2、
$(ls /tmp) 会把显示的结果作为命令执行

(ls /tmp) 只显示结果

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com