49

シェル スクリプトで空の配列を宣言しようとしていますが、エラーが発生しています。

#!/bin/bash

list=$@

newlist=()

for l in $list; do

        newlist+=($l)

done

echo "new"
echo $newlist

私がそれを実行すると、私は得るtest.sh: 5: test.sh: Syntax error: "(" unexpected

4

5 に答える 5

27

bash で実行します。

bash test.sh

エラーを見ると、実際にダッシュで実行しているようです:

> dash test.sh
test.sh: 5: test.sh: Syntax error: "(" unexpected

今回だけはおそらくそれへのリンク (/bin/sh -> /bin/dash) を使用しました。

于 2013-09-20T16:22:39.553 に答える
20

次の構文の方が読みやすいと思います。

declare -a <name of array>

詳細については、初心者のための Bash ガイド: 10.2 を参照してください。配列変数

于 2016-12-12T19:25:19.470 に答える
-4

配列が空の場合は、次のようにします。

NEWLIST=

次の方法で確認できます。

if [ $NEWLIST ] ; then
   # do something
fi

空でない配列宣言は次のようになります。

NEWLIST=('1' '2' '3')

処理中に配列を埋めるには:

ARRAY=("$(find . -name '*.mp3')")

お役に立てれば

于 2013-09-20T16:32:25.520 に答える