3

シェル展開を使用すると、展開されたすべての単語が 1 行に表示されます。例えば:

#!/bin/bash 
data="Hello\ {World,Rafi}"
eval echo $data

これにより、次の出力が生成されます。

Hello World Hello Rafi

このように各行を別々の行に出力することは可能ですか?

Hello World 
Hello Rafi
4

6 に答える 6

3

エコーに「-n」があることを除いて、Antarusの回答と同じです。http://unixhelp.ed.ac.uk/CGI/man-cgi?echoから

-n 末尾の改行を出力しません

#!/bin/bash
data="Hello\ {World,Rafi}'\n'"
eval echo -n -e "$data"
于 2013-06-27T08:59:35.900 に答える
1

これは別のソリューションですが、非常にクリーンなソリューションです。

#!/bin/bash

names="World Rafi"
for name in $names
do
    echo Hello $name
done
于 2013-06-27T08:55:35.383 に答える
1

を使用する代わりにeval(これは危険であり、実際には良い習慣ではありません。投稿の私のコメントを参照してください)、別の戦略は配列を使用することです。以下は、クリーンで安全な方法で、まさにあなたが望むことを行います:

data=( "Hello "{World,Rafi} )
printf "%s\n" "${data[@]}"
于 2013-06-28T11:10:37.883 に答える