我有一个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,默认shell为KSH。
/bin/ksh ssh user…
? - sidyll$(...)
部分应该在远程主机上运行。本地主机使用sh或ksh都无所谓。 - mob