2017-05-27 8 views
0

私は以下のように2つのbashスクリプトを持っているを含む引数を渡す方法:私はmain.shにスペースを含む引数を渡すためにしようとしている
bashの:スペース

#main.sh 
#!/bin/bash 

files="file1 \"abc $1\" \"def $1\"" 

./upload.sh $files 


#upload.sh 
#!/bin/bash 
for param in "[email protected]"; do 
    echo "${param}" 
done 

コマンド:

edeMacBook-Pro:doc Yves$ ./main.sh "Sri Lanka" 

私は$filesがこのようになると思う:file1 "abc Sri Lanka" "def Sri Lanka"。だから私が./upload.sh $filesをするとき、3つの引数はupload.shに渡されるべきです。私は、コマンドを実行すると

しかし、私が取得:

file1 
"abc 
Sri 
Lanka" 
"def 
Sri 
Lanka" 

答えて

3

むしろあなたは、その後に試みることができるすべての引数の文字列(「のように見える」という単一の文字列を構築しようとしているよりもeval)実際にそのルートに行きたい場合は、配列を使ってみてください:

files=("file1" "abc $1" "def $1") 
upload.sh "${files[@]}" 
関連する問題