Shell 逐行读取文件并在变量中添加分号
我有一个包含邮件地址的.txt文件,如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=
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))