【问题标题】:"find" command in the shell script gives an errorshell 脚本中的“find”命令出错
【发布时间】:2012-11-07 02:34:10
【问题描述】:

我正在编写一个脚本来查找具有相同权限的文件,然后将命令行中的一些可选命令应用于它们。几个小时后,我想出了这段代码

命令行是这样的:

codename 644 ls -l

脚本如下:

#!/bin/sh
permission=$1
shift
find . -maxdepth 1 -perm $permission exec $* {} \;

我相信 exec 任务在移动第一个命令(此处为 644)后将结果重定向到命令行。 如果我错了,请纠正我。 我的问题是,当我在命令行中使用 find 行时,它工作得很好,但是在脚本中使用它之后,它给了我一个错误

./codename 664 ls -l 查找:路径必须在表达式之前:exec 用法:find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

【问题讨论】:

    标签: shell unix


    【解决方案1】:

    您忘记了$ 的权限和-exec,所以

    find . -maxdepth 1 -perm $permission -exec $* {} \;
    

    【讨论】:

    • 尝试sh -x your_script进行调试