首页 > 解决方案 > bash 脚本将两个变量值打印到同一行序列中

问题描述

我正在编写一个 bash 代码并希望将两个变量值打印到同一行,而我正在尝试使用 echo 命令进行相同操作,但我没有得到它,因为它们一个接一个地被打印出来。

#!/bin/bash
BLK_ID=$(blkid | awk -F:  '{print $1}')
for i in "$BLK_ID";
  do
BLK_VAL=$(blkid -s UUID -o value $i);

#echo "Disk:${BLK_ID} -- UUID:${BLK_VAL}"
echo "$BLK_ID $BLK_VAL"
done

结果

/dev/sdb1
/dev/sda1
/dev/sda2
/dev/sda4

期望:

/dev/sdb1    8ce464b0-cc26-41ae-b6a5-2643b3e09226
/dev/sda1    LLi8wj-ROs5-IRQT-5qHy-3jDg-snro-RYbvOo
/dev/sda2    45y8wj-ROs5-IRQT-5qHy-4jDg-snro-RYbvOo
/dev/sda4    278edab7-9ccd-4302-bf84-5a1a68e897d2

标签: bash

解决方案


试试下面:

paste <(printf %s "$BLK_ID") <(printf %s "$BLK_VAL") 

OR

paste <(printf %s "$BLK_ID") <(printf %s "$BLK_VAL") | column -t  <-- this will help to better align columns

输出:

/dev/sdb1    8ce464b0-cc26-41ae-b6a5-2643b3e09226
/dev/sda1    LLi8wj-ROs5-IRQT-5qHy-3jDg-snro-RYbvOo
/dev/sda2    45y8wj-ROs5-IRQT-5qHy-4jDg-snro-RYbvOo
/dev/sda4    278edab7-9ccd-4302-bf84-5a1a68e897d2

推荐阅读