我想将一组单词作为参数传递给bash脚本。似乎当我想要打印参数时,只有该组的第一个单词是打印。
这些是我的脚本,第一个只是将一组单词分配给变量并将变量传递给另一个脚本。第二个只打印它传递的变量。
script.sh
#!/bin/bash
GC='lblue, lblue, lgrey, lred, lred'
./script2.sh $GC
script2.sh
#!/bin/bash
printf "$1 \n"
这是我运行时脚本的当前结果
./script.sh
lblue,
我希望脚本输出
lblue, lblue, lgrey, lred, lred
答案 0 :(得分: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
答案 1 :(得分:0)
您也可以传递数组:
<强> script.sh 强>
#!/bin/bash
a=("$@")
gc=$(IFS=, ; printf "${a[*]}"| sed 's/, */, /g' )
printf "${gc[*]} \n"
<强>输入强>
gc=(red green blue)
./script.sh ${gc[*]}
输出将是:
red, green, blue