【问题标题】:Unix shell script not executing from another script未从另一个脚本执行的 Unix shell 脚本
【发布时间】:2019-11-25 01:43:55
【问题描述】:

我使用 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

【问题讨论】:

    标签: shell unix sh


    【解决方案1】:

    ${FileName[$i]}* 很可能正在扩展为 多个 文件名,这将在您的命令中为您提供类似于 -name file1 file2 的内容。

    例如,如果与该掩码匹配的文件存在于您从另一个脚本运行它的情况下,但当您从命令运行它时,则可能会发生这种情况线。根据以下记录,如果可能,一些 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]} ...
    

    看看它的输出。

    【讨论】:

    • 我在输出下方回显它给我的 find 命令。 /usr/bin/find /var/opt/app/incontrol/Logs/IPC/ -name agent.log* -type f -mtime +10 | grep /var/opt/app/incontrol/Logs/IPC/agent.log 当我直接在脚本中运行或从另一个脚本调用此脚本时,它给了我相同的输出。
    猜你喜欢
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多