GNU/Linux >> LINUX-Kenntnisse >  >> Linux

bash:Listendateien in eine Variable einfügen, aber die Größe des Arrays ist 1

Sie erstellen kein Array, es sei denn, Sie umgeben es mit ( ) :

dirlist=(`ls ${prefix}*.text`)

Deklarieren Sie ein Array von Dateien:

arr=(~/myDir/*)

Durchlaufen Sie das Array mit einem Zähler:

for ((i=0; i < ${#arr[@]}; i++)); do

  # [do something to each element of array]

  echo "${arr[$i]}"
done

Dies:

dirlist=`ls ${prefix}*.text`

macht kein Array. Es erstellt nur eine Zeichenfolge mit durch Leerzeichen getrennten Dateinamen.

Du musst tun

dirlist=(`ls ${prefix}*.text`)

um daraus ein Array zu machen.

Dann $dirlist wird nur auf das erste Element verweisen, also müssen Sie

verwenden
${dirlist[*]}

um alle in der Schleife zu referenzieren.


Linux
  1. Einzelne Klammer in der Bash-Variablenzuweisung?

  2. Wie suche ich nach Dateien nach Größe und Erweiterung?

  3. Überprüfen Sie, ob eine Variable in einer Liste in Bash vorhanden ist

  4. Übergeben von grep an eine Variable in bash

  5. bash:Array-Env-Variable setzen und Dereferenzieren von einem beliebigen Shell-Skript schlägt fehl

Bash-Declare-Anweisung:Syntax und Beispiele

Ls-Befehl in Linux (Dateien und Verzeichnisse auflisten)

Wie listet man alle Dateien in Linux nach Größe sortiert auf?

Befehl zum Auflisten aller Dateien außer . (Punkt) und .. (Punkt Punkt)

Übertragen Sie Dateien mit lftp im Bash-Skript

Was genau ist <() in bash (und =() in zsh)?