使用Linux在终端中运行脚本

时间:2015-11-16 17:39:48

标签: linux shell unix

我试图在终端中运行这个脚本,但它没有工作,并说权限被拒绝。 scriptEmail是文件名。

% find . -type d -exec ./scriptEmail {} \;

scriptEmail写成如下:

# !/bin/bash
# Mail Script
find gang-l -type f -name "*" -exec sh -c ' file = "$0" java RemoveHeaders "$file" > processed/$file ' {} ';'

我的读写权限

-rwxr-xr-x

2 个答案:

答案 0 :(得分:1)

至于权限:

  • 检查您的shebang是否位于文件的最顶层,并确保与<{1}}完全 ; #! 无法使用
  • 检查您的文件是否具有执行权限; # !会这样做。
  • 检查你的文件是否使用UNIX换行符 - 使用DOS换行符,你的shebang可能有一个隐藏的字符,使它指向一个实际上并不存在的解释器。
  • 检查您的文件所在的目录是否在允许可执行脚本的目录中(未使用chmod 750 scriptEmail标志安装,或者在SELinux上下文中禁止执行)。

如果您的挂载点是noexec,或者SELinux或类似程序阻止了您创建可执行脚本的能力,那么请使用noexec显式指定解释器,而不是尝试执行您的脚本。

第二:既然您已经使用find . -type d -exec bash ./scriptEmail {} \;执行了您的脚本 - 并使用它来递归目录 - 您内部不需要第二个find(这会您是否有可能在find以及processed/dirA/dirB/fileprocessed/dirB/file上运行 - 但目录不存在的所有这些都存在错误。

processed/file

答案 1 :(得分:-1)

尝试

sudo find . -type d -exec ./scriptEmail {} \;