Unix Shell脚本未从另一个脚本执行

时间:2019-11-25 01:43:55

标签: shell unix sh

我已经使用Shell脚本编写了以下命令:

/usr/bin/find ${FilePath[$i]} -name ${FileName[$i]}* -type f -mtime +${DaysNo[$i]} | grep ${FilePath[$i]}$tempfile > tempFilesList

当我直接执行此脚本时看起来不错,但是当我尝试从另一个 shell脚本执行该脚本时,出现以下错误。

ERROR : /usr/bin/find: bad option resultmgr.log_2019-11-07
/usr/bin/find: [-H | -L] path-list predicate-list

1 个答案:

答案 0 :(得分:0)

很可能${FileName[$i]}*被扩展为多个文件名,这将在您的命令中给您类似-name file1 file2的名称。

例如,如果您从另一个脚本运行该掩码时,当前工作目录中存在与该掩码匹配的文件,而从命令运行时,则为 not 线。根据下面的记录,某些shell会尽可能扩展,但如果不保留则单独保留:

~> echo testprog*
testprog testprog.c
~> echo nosuchfile*
nosuchfile*
~> _

file2将被视为find的控制参数,因此无效。

您可以通过在运行该命令之前简单地回显该命令来对其进行检查:

echo Will run: /usr/bin/find ${FilePath[$i]} -name ${FileName[$i]}* -type f -mtime +${DaysNo[$i]} ...

并查看其输出。