2014-01-12 238 views
0

使用OSX,我下载了pig-0.11.1,并在我的bashrc中创建了一个别名。我有以下别名:为什么脚本没有被执行?

别名pigalias ='的/ dev /猪-0.11.1/bin中/猪-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”

的问题是,当我运行类似:

piglias myscript.pig 

繁重的外壳弹出,但不AP梨实际上执行我的脚本。

注:我也/dev/avro-mapred-1.7.4.jar: Permission Denied。该文件被设置为具有644的chmod(为所有人阅读)。

更新:增加周围的参数双引号后,我得到一个:

/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. 

这些文件清楚地存在。他们每个人。

+0

分号是一个命令分隔符,您需要将参数放在引号中以防止出现这种情况。 – Barmar

回答

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作为一个程序,因为它是分号之后,并没有执行权限。

+0

获取ERROR101文件'/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'不存在。 – Setsuna

+0

对我来说,就像你不应该用分号分隔文件一样。也许它使用冒号?我对猪一无所知。 – Barmar