0 votes

```html Veuillez traduire ceci en gardant les mêmes balises HTML s'il y en a : zsh/bash chaîne en tableau ne fonctionne pas en utilisant des parenthèses ```

Savez-vous pourquoi ceci ne convertit pas la chaîne en tableau ?

  STR="un deux trois"
  tableau=("$STR")

  echo "${tableau[@]}" # imprime : un deux trois
  echo "longueur : ${#tableau[@]}" # imprime : longueur : 1
  echo "élément : ${tableau[2]}" # imprime :

3voto

Michael Zhou Points 167

La valeur de STR est un élément de votre tableau en raison des guillemets. Vous pourriez peupler votre tableau comme suit-

array=(one two three)

Les tableaux en zsh commencent à 1 et non à 0 comme dans ksh et bash.

3voto

thrig Points 777

Dans ZSH, vous pouvez utiliser une extension de paramètre. Ici, l'extension s: : est utilisée pour séparer la chaîne sur qui peut être difficile à voir; nous pourrions l'appeler la valeur décimale ASCII 32 ou juste espace.

% string="foo bar"
% array=(${(s: :)string})
% print $array[1]
foo

Le code bash ailleurs sur cette page n'est pas vraiment sûr dans toutes les conditions. Le shell POSIX par défaut fait une auto-séparation (ce qui est souhaitable ici) et un auto-glob (ce qui peut être très indésirable; si des caractères de glob à un moment donné entrent dans la string et correspondent ensuite à des fichiers dans le répertoire de travail actuel):

bash-5.1$ string="who* foo"
bash-5.1$ array=($string)
bash-5.1$ echo ${array[@]}
whoops.app whoops.png whoops.txt foo
bash-5.1$ printf '%s\n' ${array[@]}
whoops.app
whoops.png
whoops.txt
foo
bash-5.1$ ls whoops.*
whoops.app      whoops.png      whoops.txt

Surprise!!

(ZSH n'est pas conforme à POSIX donc ne fait pas la séparation automatique non cotée des variables ni le glob automatique (par défaut), Dieu merci.)

1voto

Chris G. Points 163

J'ai trouvé que cela fonctionnait:

bash

 array=($STR) # removed expansion ""

zsh

eval "array=($STR)"

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X