shで複数行の変数を並べて印刷するには?

shで複数行の変数を並べて印刷するには?

この質問は以下に基づいています。Ask Ubuntuにも同様の質問がありますしかし、私はbash同様の出力が欲しいsh

Bashには問題ありません。期待どおりに動作します。

wolf@linux:~$ echo $SHELL
/usr/bin/bash
wolf@linux:~$ 
wolf@linux:~$ varA='Aug 01
> Aug 16
> Aug 26'
wolf@linux:~$ 
wolf@linux:~$ varB='04:25
> 03:39
> 10:06'
wolf@linux:~$ 
wolf@linux:~$ echo "$varA $varB"
Aug 01
Aug 16
Aug 26 04:25
03:39
10:06
wolf@linux:~$
wolf@linux:~$ paste <(printf %s "$varA") <(printf %s "$varB")
Aug 01  04:25
Aug 16  03:39
Aug 26  10:06
wolf@linux:~$

ただし、同様のコマンドを試してみると、sh次のエラーが発生します。

wolf@linux:~$ sh
$ 
$ varA='Aug 01
> Aug 16
> Aug 26'

$ varB='04:25
> 03:39
> 10:06'
$ 
$ echo "$varA $varB"
Aug 01
Aug 16
Aug 26 04:25
03:39
10:06
$ 
$ paste <(printf %s "$varA") <(printf %s "$varB")
sh: 22: Syntax error: "(" unexpected
$ 

同様の出力が得られますかsh

ベストアンサー1

変数の行数が等しい場合その後、このprコマンドを使用して、たとえば標準出力を2つの列に印刷できます。

$ printf '%s\n' "$varA" "$varB" | pr -2 -Ts^I       
Aug 01  04:25
Aug 16  03:39
Aug 26  10:06

タブ文字を表す^I(コマンドのデフォルトの区切り文字と一致するpaste)キーの組み合わせCtrl+はじめに、ヘッダーとフッターをV TAB同時に閉じることができます。-T

おすすめ記事