从Mac Automator运行Shell脚本

时间:2014-08-06 12:59:57

标签: macos bash automator

在OS X 10.9.5中

我写了一个Shell脚本(通过vim)。保存并导航到此脚本和

sh code.sh它运行完美(在iTerm& Total Terminal中)。

同一目录中的相同命令通过Mac Automator始终产生ERROR。为什么呢?

在Automator和终端。

echo $SHELL /bin/bash 为什么不能通过Automator运行一个shellcript。 enter image description here

3 个答案:

答案 0 :(得分:3)

我怀疑它是cd Desktop位。你可以尝试:

(cd ~/Desktop; sh code.sh)

然而:

  • 您应该code.sh可执行,因此您不需要使用sh调用它。这是通过chmod 0755 code.sh完成的。

  • 如果您需要shell脚本从某个目录(即脚本所在的目录)开始工作,那么将其构建到脚本中,以便只用~/Desktop/code.sh调用它:

    #!/bin/bash
    dir=$(dirname $0)
    cd $dir
    # do work
    

例如:

➜  ~  cat tmp/code.sh
#!/bin/bash
dir=$(dirname $0)
cd $dir
ls -l

➜  ~  chmod 0755 tmp/code.sh
➜  ~  tmp/code.sh
total 64
drwxr-xr-x   6 andy  staff    204 Feb 22 18:53 Archives
drwxr-xr-x  11 andy  staff    374 Jun 18 13:59 DerivedData
-rw-r--r--   1 andy  staff    225 May 20 13:44 MyFirstProgram.X
-rwxr-xr-x   1 andy  staff   3072 May 20 13:44 MyFirstProgram.exe
drwxr-xr-x   3 andy  staff    102 Jan  6  2014 bug_reports
-rwxr-xr-x   1 andy  staff     43 Aug  6 14:15 code.sh
-rw-r--r--   1 andy  staff  11539 May 20 08:33 iOS_Team_Provisioning_Profile_.mobileprovision
-rw-r--r--   1 andy  staff   1438 May 20 08:40 ios_development.cer
-rwxr-xr-x   1 andy  staff    272 Aug  5 08:55 script.sh

答案 1 :(得分:3)

通过在当前代码上方添加以下代码可以解决此问题:

export PATH=/usr/local/bin:$PATH

答案 2 :(得分:2)

解决方案

创建两个输出文件: 在Automator中: env > ~/Desktop/file_1.txt 在iTerm中: env > ~/Desktop/file_2.txt

DIFF

diff -y ~/Desktop/file_1.txt ~/Desktop/file_2.txt

而且,瞧,有很多不同之处! 插入差异,例如export LANG=de_DE.UTF-8到脚本,它的工作原理!