J'essaie de déclarer un tableau vide dans Shell Script, mais je rencontre une erreur.
#!/bin/bash
list=$@
newlist=()
for l in $list; do
newlist+=($l)
done
echo "new"
echo $newlist
Quand je l'exécute, j'obtiens test.sh: 5: test.sh: Syntax error: "(" unexpected
Exécutez-le avec bash:
bash test.sh
Et voyant l'erreur, il semble que vous l'exécutiez avec dash:
> dash test.sh
test.sh: 5: test.sh: Syntax error: "(" unexpected
Seulement cette fois, vous avez probablement utilisé le lien (/ bin/sh ->/bin/dash).
Je trouve la syntaxe suivante plus lisible.
declare -a <name of array>
Pour plus de détails, voir Bash Guide for Beginners: 10.2. Variables de tableau .
Essayez ceci pour voir si vous êtes orienté vers le tiret ou le bash
ls -al /bin/sh
Si elle indique /bin/sh -> /bin/dash
, tapez ceci:
Sudo rm /bin/sh
Sudo ln -s /bin/bash /bin/sh
Puis tapez à nouveau:
ls -al /bin/sh*
alors doit dire quelque chose comme ça:
/bin/sh -> /bin/bash
Cela signifie que maintenant sh
est correctement orienté vers Bash et que vos tableaux fonctionneront.
Dans BASH 4+, vous pouvez utiliser les éléments suivants pour déclarer un tableau vide:
declare -a ARRAY_NAME=()
Vous pouvez ensuite ajouter de nouveaux éléments en:
ARRAY_NAME+=NEW_ITEM