首页 > 解决方案 > 将文件中的行读入 Bash 中的变量

问题描述

我正在创建一个脚本来使用 Bash 从 Unix 中的文本文件中自动添加用户

我已将文件读入 $FILE 中的脚本

该文件采用以下格式:电子邮件;生日;组;共享文件夹

我想忽略文件中的第一行并将数据读入变量

我已经将 IFS 设置为 ';' 早些时候。目前我有

sed 1d $FILE | while read EMAIL BIRTH GROUPS SHAREDFOLDER
do
echo "$EMAIL"
done < $FILE

但是当我回显 EMAIL 变量时,我什么也没得到

标签: bashunix

解决方案


您正在尝试重定向标准输入两次。管道和管道<不能都连接到while read. 在我的 Bash 上<获胜:

bash$ echo moo | cat <<<bar
bar

显然你想要简单

sed 1d "$FILE" | while read -r EMAIL BIRTH GROUPS SHAREDFOLDER
do
    echo "$EMAIL"
done

尽管这可以有意义地简化为

sed 1d;s/;.*//' "$FILE"

您还真的想为您的私有变量使用小写,但这是一个单独的讨论。


推荐阅读