2014-12-05 66 views
0

我正在嘗試使用groovy來獲得bash腳本。它看起來像這樣:Groovy,bash中的意外令牌

#!/bin/sh 

DIR=`pwd` 

MASTER="['master', 'localhost:8080']" 
SLAVE="['slave', 'localhost:8081']" 

gnome-terminal -e "bash -c \"cd $DIR; 
          gradle run -PappArgs=$MASTER; exec bash\"" 

gnome-terminal -e "bash -c \"cd $DIR; 
          gradle run -PappArgs=$SLAVE; exec bash\"" 

但我得到這個錯誤:

startup failed: 
    Script1.groovy: 1: unexpected token: @ line 1, column 9. 
    [master, 
      ^

,我讀了常規逃不同的字符比bash和,可能是問題,但我一直沒能解決它...

+0

什麼是'Script1.groovy'? – 2014-12-05 11:08:45

+0

可能工作,如果在MASTER/SLAVE變量中刪除空間,或者更好地引用它正確 – cfrick 2014-12-05 11:12:56

回答

1

您需要在MASTER和SLAVE值上引用一個額外的級別。 'printf'可以爲你做:

printf -v MASTER '%q' "['master', 'localhost:8080']" 
printf -v SLAVE '%q' "['slave', 'localhost:8081']" 
+0

因此,我用printf替換了MASTER和SLAVE變量,但現在我得到一個NullPointerException而不是 編輯:我得到./start .sh:5:printf:非法選項-v,但我可以直接在我的shell中執行它。雖然 – hboy 2014-12-05 11:59:39

+0

@ user1900750不在腳本中,但看起來您正在系統上運行/ bin/sh不是/ bin/bash的鏈接。如果你把第一行改成'#! /斌/慶典」。 – pjh 2014-12-05 12:12:22