我有一个 perl 脚本需要检查远程机器上的空目录。使用 ksh 我可以获得以下 shell 脚本:
ksh# ssh user@host '[ "$(ls -A /empty/dir/* 2>/dev/null)" ] && echo "1" || echo "0"'
如果目录为空或不存在,这将正确返回“0”。仅当目录包含某些内容时,它才会返回“1”。
当我将这一行放在 perl 脚本中时,如下所示:
#!/usr/bin/perl
print `ssh user\@host '[ "$(ls -A /empty/dir/* 2>/dev/null)" ] && echo "1" || echo "0"'`
无论我放什么,它都会返回一个“1”,空目录与否。我检查了与普通 shell 和 perl 脚本相比的 env 值,它们是相同的。
有谁知道为什么这个命令只会在 perl 脚本中返回不同的结果?
两台机器都是 AIX 6.1,使用 KSH 作为默认 shell。