Shell 逐行读取文件并在变量中添加分号

Shell 逐行读取文件并在变量中添加分号,shell,loops,unix,Shell,Loops,Unix,我有一个包含邮件地址的.txt文件,如 a@xyz.com b@xyz.com c@xyz.com 我需要传递一个包含eg值的变量 $MAIL_ID=a@xyz.com;b@xyz.com;c@xyz.com; 我想出了类似的办法 cat mail_list.txt | for MAIL_ID in $(cat ${1}); do TEMP=' ' $ID=$MAIL_ID";"$TEMP done echo $ID 请对此提供帮助,每个条目都需要附加到$ID。请尝试此操作 ID=

我有一个包含邮件地址的.txt文件,如

a@xyz.com  
b@xyz.com  
c@xyz.com
我需要传递一个包含eg值的变量

$MAIL_ID=a@xyz.com;b@xyz.com;c@xyz.com;
我想出了类似的办法

cat mail_list.txt | for MAIL_ID in $(cat ${1});
do
TEMP=' '
$ID=$MAIL_ID";"$TEMP
done
echo $ID

请对此提供帮助,每个条目都需要附加到$ID。请尝试此操作

ID=""
while read MAIL_ID
do
    ID=$ID";"$MAIL_ID
done < mail_list.txt
ID=$(echo $ID | cut -c2-)
echo $ID
ID=“”
在读取邮件ID时
做
ID=$ID“;”$MAIL\u ID
完成
试试这个

MAIL_ID=''
while read email; do
  MAIL_ID=$MAIL_ID$email';'
done <a.txt

echo $MAIL_ID

您可以使用
粘贴

paste -s -d\; file.txt
并使用它填充变量:

ID=$(paste -s -d\; file.txt)
如果输入文件包含不需要的空白字符(如示例中所示),则可以使用以下选项:

ID=$(paste -s -d\; <(sed 's/ *$//' file.txt))

ID=$(paste-s-d\;为什么需要将其放入变量中?使用该变量的人可能更容易使用该文件。将数据放入所需格式的变量中非常简单(例如
MAIL\u ID=$(tr\\n\;
),但我强烈建议您重新评估是否有必要。
ID=$(paste -s -d\; <(sed 's/ *$//' file.txt))