2015-06-27 26 views
0

我有一個傳遞包含空格參數的bash文件。 bash的文件看起來像:如何使用帶空格的參數在Bash中調用應用程序

#!/bin/bash 
another_app "$1" 

然而,除了處理參數作爲一個單獨的參數,因爲我相信它應該,這取決於有多少空間處理它作爲一個數量的參數。例如,如果我把我的bash文件,例如:

my_app "A Number Of Words" 

那麼「another_app」應用程序被通過4個不同的參數,而不是一個。我怎樣才能將單個參數傳遞給第二個應用程序?

+2

如果'myapp'是這個兩行腳本,那麼'my_app'一個單詞的數量'''會用一個參數調用'another_app'。 「another_app」對單個參數做了什麼是任何人的猜測。 –

+0

這就是我的想法,但我嚴重懷疑「another_app」有這個問題 - 它是一個非常流行的命令行工具。 – user3690202

+0

好吧,這段代碼不會**將第一個參數分解成單獨的單詞。 –

回答

1

的人是正確的,將一定程度上取決於第二個應用程序如何處理ARGS。您還可以對參數的傳遞方式進行一些控制。你可以用一些引用或使用 「$ @」 變種通過@steve

例如提到這樣做app1.sh

#!/bin/bash 

echo "Argument with no quotes" 
./another_app.sh $1 

echo "Argument with quotes" 
./another_app.sh "$1" 

echo "Argument with \[email protected]" 
./another_app.sh "[email protected]" 

和another_app.sh #!/斌/慶典

echo "Inside $0" 
echo "Number of args passed to me: $#" 

for X in "${@}" 
do 
    echo $X 
done 
echo "Exiting $0" 
+0

你(和@Steve Vinoski)是對的。 「$ 1」工作正常 - 事實證明,問題是在傳遞給第二個應用程序的另一個參數中沒有正確轉義。謝謝你的幫助! – user3690202

相關問題