这个bash操作在shell scipt中是如何工作的

这个bash操作在shell scipt中是如何工作的,bash,shell,unix,ls,Bash,Shell,Unix,Ls,您好,我遇到了一个bash操作,我发现很难理解。我已经阅读了bash参考手册,但是没有找到这个操作的工作原理 我很难理解我知道的操作是什么,ls-A会列出所有文件,包括隐藏文件,变量中已经存储了信息,那么$()操作做什么呢 这就是手术 if [ "$(ls -A $variable)" ] 感谢您的反馈1)请参阅ls的手册页: 2) $()相当于反引号(```),也称为“命令替换”。这对应于子进程执行。 换句话说,命令的输出被括号括住,并可能受到如下变量的影响: var=$(ls -A) ec

您好,我遇到了一个bash操作,我发现很难理解。我已经阅读了bash参考手册,但是没有找到这个操作的工作原理

我很难理解我知道的操作是什么,ls-A会列出所有文件,包括隐藏文件,变量中已经存储了信息,那么$()操作做什么呢

这就是手术

if [ "$(ls -A $variable)" ]
感谢您的反馈

1)请参阅
ls
的手册页:

2)
$()
相当于反引号(```),也称为“命令替换”。这对应于子进程执行。 换句话说,命令的输出被括号括住,并可能受到如下变量的影响:

var=$(ls -A)
echo "$var" # will print the output of ls -A
3)
[“string”]
[[“string”]]
测试字符串
等同于使用-n选项:

$ [[ "" ]] && echo "yes"
$ [[ "something" ]] && echo "yes"
yes
$ [[ -n "something" ]] && echo "yes"
yes
参见
人工测试


因此,您的命令允许检查当前目录的内容是否为空。

如果[“$(ls-A$variable)”]
将为真,如果命令
ls-A$variable
返回任何输出,
$()
“操作符”(or)执行命令并返回其输出。

人工测试
。如果需要更好的命令,请使用“字符串等效于-n字符串”:
[[$(find.-mindepth 1-printf g-quit)]
$ [[ "" ]] && echo "yes"
$ [[ "something" ]] && echo "yes"
yes
$ [[ -n "something" ]] && echo "yes"
yes
-n STRING
    the length of STRING is nonzero