这个bash操作如何在shell脚本中工作

时间:2014-04-20 21:27:08

标签: bash shell unix ls

您好我遇到了一个bash操作,我发现很难理解我已经查看了bash参考手册但是没有运气弄清楚这个操作是如何工作的。

我无法理解我知道什么操作我知道ls -A会列出所有文件,包括隐藏文件,变量已经存储了信息,所以$()操作会做什么。

这是操作。

if [ "$(ls -A $variable)" ]

感谢您的反馈

2 个答案:

答案 0 :(得分:1)

1)请参阅ls的联机帮助页:

-A, --almost-all
    do not list implied . and ..

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

var=$(ls -A)
echo "$var" # will print the output of ls -A

3)[ "string" ][[ "string" ]]test string相当于使用-n选项:

$ [[ "" ]] && echo "yes"
$ [[ "something" ]] && echo "yes"
yes
$ [[ -n "something" ]] && echo "yes"
yes

请参阅man test

-n STRING
    the length of STRING is nonzero

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

答案 1 :(得分:1)

如果命令if [ "$(ls -A $variable)" ]返回任何输出,那么

ls -A $variable将为真 - $()"运算符" (或command substitution)执行命令并返回它的输出。