shell - 未从另一个脚本执行的 Unix shell 脚本
问题描述
我使用 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
解决方案
很可能${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]} ...
并查看它的输出。
推荐阅读
- qt - qmake:每个 make 调用的自定义步骤
- python - pywifi不能安装在python上
- .net - EF fluent 映射 DbGeography 问题:类型“System.Data.Spatial.DbGeography”必须是不可为空的值类型才能将其用作参数“T”
- datetime - DateTime 的国际化不起作用
- python - 无法识别使用 **kwarg 格式的任意关键字位置参数
- java - Java Android如何将多个复选框保存到字符串如果选中并存储到SharedPref并将其作为字符串检索
- wordpress - 无法压缩我的 wordpress 网站
- ios - 请求音乐库权限 swift 或 obj-c
- c# - 按 XAttribute 的值合并 XDocument
- python - Azure Notebook 中的无头浏览器