シェル展開を使用すると、展開されたすべての単語が 1 行に表示されます。例えば:
#!/bin/bash
data="Hello\ {World,Rafi}"
eval echo $data
これにより、次の出力が生成されます。
Hello World Hello Rafi
このように各行を別々の行に出力することは可能ですか?
Hello World
Hello Rafi
エコーに「-n」があることを除いて、Antarusの回答と同じです。http://unixhelp.ed.ac.uk/CGI/man-cgi?echoから
-n 末尾の改行を出力しません
#!/bin/bash
data="Hello\ {World,Rafi}'\n'"
eval echo -n -e "$data"
これは別のソリューションですが、非常にクリーンなソリューションです。
#!/bin/bash
names="World Rafi"
for name in $names
do
echo Hello $name
done
を使用する代わりにeval
(これは危険であり、実際には良い習慣ではありません。投稿の私のコメントを参照してください)、別の戦略は配列を使用することです。以下は、クリーンで安全な方法で、まさにあなたが望むことを行います:
data=( "Hello "{World,Rafi} )
printf "%s\n" "${data[@]}"