したがって、任意の数のコマンドライン引数を取り、それらを単一の文字列に入れる必要があるbashスクリプトがあります
ユーザーが入力する内容の例:
give <environment> <email> <any number of integers separated by spaces>
give testing stuff@things.com 1 2 3 4 5
$3 から $# までのすべての引数を取得し、それらを文字列に連結したいと考えています。
現在の私の(おそらくひどい)解決策は
if [ $# -gt 3 ]
then
env="env="$1
email="email="$2
entList=""
for i in {3..$#}
do
if [ $i -eq 3 ]
then
entList=$3
shift
fi;
if [ $i -gt 3 ]
then
entList=$entList","$3
shift
fi;
done
fi;
引数が 3 つしかない場合は、少し異なる方法で処理しますが、その 1 つは正常に機能します。
$entList
与えられた例の最終値は次のようgive testing stuff@things.com 1 2 3 4 5
になります。1,2,3,4,5
今これを実行すると、次のエラーが発生します。
/usr/local/bin/ngive.sh: line 29: [: {3..5}: integer expression expected
/usr/local/bin/ngive.sh: line 34: [: {3..5}: integer expression expected
29 行目と 34 行目は次のとおりです。
line 29: if [ $i -eq 3 ]
line 34: if [ $i -gt 3 ]
どんな助けでも大歓迎です。