您好我遇到了一个bash操作,我发现很难理解我已经查看了bash参考手册但是没有运气弄清楚这个操作是如何工作的。
我无法理解我知道什么操作我知道ls -A会列出所有文件,包括隐藏文件,变量已经存储了信息,所以$()操作会做什么。
这是操作。
if [ "$(ls -A $variable)" ]
感谢您的反馈
答案 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)执行命令并返回它的输出。