为什么脚本没有被执行?

时间:2014-01-12 06:12:25

标签: bash apache-pig alias

使用OSX,我按原样下载了pig-0.11.1,并在我的bashrc中创建了一个别名。我有以下别名:

  

alias pigalias ='/ dev / pig-0.11.1 / bin / pig -D   udf.import.list = org.apache.pig.piggybank.storage.avro -D   pig.additional.jars =的/ dev /阿夫罗-1.7.4.jar; /dev/avro-mapred-1.7.4.jar; /dev/json_simple-1.1.jar; /Users/devpig-0.11.1/contrib/扑满/ JAVA / piggybank.jar'

问题出在我运行的时候:

piglias myscript.pig

弹出grunt shell,但似乎没有真正执行我的脚本。

注意:我也得到/dev/avro-mapred-1.7.4.jar: Permission Denied。该文件设置为chmod为644(适合所有​​人阅读)。

更新:在参数周围添加双引号后,我得到了一个:

/dev/avro-1.7.4.jar;/dev/avro-mapred-1.7.4.jar;/dev/json_simple-1.1.jar;/Users/devpig-0.11.1/contrib/piggybank/java/piggybank.jar' does not exist.

这些文件显然存在。他们每个人。

1 个答案:

答案 0 :(得分:0)

您需要围绕包含分号的-D参数的引号,否则它将终止命令。

alias pigalias='/dev/pig-0.11.1/bin/pig -D udf.import.list=org.apache.pig.piggybank.storage.avro -D "pig.additional.jars=/dev/avro-1.7.4.jar;/dev/avro-mapred-1.7.4.jar;/dev/json_simple-1.1.jar;/Users/devpig-0.11.1/contrib/piggybank/java/piggybank.jar"'

您收到Permission denied错误是因为您尝试将/dev/avro-mapred-1.7.4.jar作为程序执行,因为它在分号之后,并且没有执行权限。