Bash

如何將由新行分隔的字元串文件轉換為數組

  • September 1, 2019

我有一個包含如下數據的文件:

UserName
UserName
UserName

每條數據由一個新行分隔。

我需要將該數據轉換為字元串數組並儲存在變數中。

如何僅通過 bash 或 shell 執行來實現這一點?

mapfile

$ mapfile -t array < yourfile

$ declare -p array # print array content
 declare -a array=([0]="UserName" [1]="UserName" [2]="UserName")
$ set -f             # disable globbing
$ arr=($(<file.csv))
$ set +f             # enable globbing
$ declare -p arr     # print array content
declare -a arr=([0]="UserName" [1]="UserName" [2]="UserName")
  • arr=(…)創建數組
  • $(<file.csv)讀取文件file.csv(如$(cat file.csv)

在讀取文件之前,應禁用萬用字元,以防止使用者名使用*?或特殊模式(路徑名擴展)等字元進行擴展。

元素在換行符、空格或製表符處拆分(假設$IFS尚未修改)並修剪。

引用自:https://unix.stackexchange.com/questions/537566