将一组单词作为bash脚本参数传递

时间:2016-12-31 05:30:05

标签: bash arguments

我想将一组单词作为参数传递给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

2 个答案:

答案 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