如何在bash中实现两个echo语句输出到同一行

时间:2016-07-21 19:33:14

标签: linux

实施例: 我有以下测试脚本

#!/bin/bash

output1=$(cat ~/Desktop/scripts/test)
output2=$(cat ~/Desktop/scripts/test2 |sed -e 's/^/\t/g')
echo -e "$output1 $output2"

当我执行上面的脚本时,我的输出低于输出

1234
5678
9123    ndfkjdskjgbsd
        sdnbfksdjgkjdsb
        sdnbvksd
        dbvksdbgf

但我看下面的输出,我怎么能实现?

1234      ndfkjdskjgbsd
5678      sdnbfksdjgkjdsb
9123      sdnbvksd
          dbvksdbgf

1 个答案:

答案 0 :(得分:2)

使用paste

paste ~/Desktop/scripts/test ~/Desktop/scripts/test2

但是,如果确实希望在本机shell中执行此操作:

while IFS= read -r line1 <&3; IFS= read -r line2 <&4; [[ $line1 || $line2 ]]; do
    printf '%s\t%s\n' "$line1" "$line2"
done 3<~/Desktop/script/test 4<~/Desktop/script/test2

这可以通过打开FD 3上的第一个文件,FD 4上的第二个文件,逐行处理这两个文件,直到没有新内容可用。