2016-12-31 17 views
0

bashスクリプトの引数として単語のグループを渡したいと思います。引数を表示したいときは、グループの最初の単語だけが印刷されているようです。複数の単語をbashスクリプト引数として渡す

これは私のスクリプトです。最初は変数の単語群を割り当て、その変数を別のスクリプトに渡します。 2番目の変数は渡された変数を出力します。

script.sh

#!/bin/bash 
GC='lblue, lblue, lgrey, lred, lred' 
./script2.sh $GC 

script2.sh

#!/bin/bash 
printf "$1 \n" 

これは私がそれ

./script.sh 
lblue, 

を実行したときに私のスクリプトの現在の結果であるIを出力するスクリプトをしたいと思います代わりに

lblue, lblue, lgrey, lred, lred 

答えて

2

空白を維持するために二重引用符で変数を囲みます - それはbashでのベストプラクティスの一つである:

#!/bin/bash 
GC='lblue, lblue, lgrey, lred, lred' 
./script2.sh "$GC" 

script2.shで:あなたがすることもでき

#!/bin/bash 
printf "$1 \n" => when $GC was passed without double quotes, shell treated them as separate words and $1 was the first word 
0

パス配列:

script.sh

#!/bin/bash 
a=("[email protected]") 
gc=$(IFS=, ; printf "${a[*]}"| sed 's/, */, /g') 
printf "${gc[*]} \n" 

入力

gc=(red green blue) 
./script.sh ${gc[*]} 

出力は次のようになります

red, green, blue 
関連する問題