我有一个包含如下数据的文件:
UserName
UserName
UserName
每条数据由换行符分隔。
我需要将该数据转换为字符串数组并存储在变量中。
如何仅通过 bash 或 shell 执行来实现此目的?
答案1
和mapfile
:
$ mapfile -t array < yourfile
$ declare -p array # print array content
declare -a array=([0]="UserName" [1]="UserName" [2]="UserName")
答案2
$ 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
尚未修改)并进行修剪。
答案3
i=0
while IFS= read -r line
do
var[i++]="$line"
done < filename
这里 var 数组变量存储所有名称。并且可以通过以下方式访问
printf '%s\n' "${var[0]}"
printf '%s\n' "${var[1]}"
...
...