如何为每一行创建一个新行:在Shell脚本中显示变量时

时间:2014-08-03 04:09:16

标签: bash shell sqlplus

我有一个具有此命令的shell脚本。

var=$(sqlplus a/a <<-EOF
set pagesize 0 feedback off verify off heading off echo off;
select * from table1;
exit
EOF
)

当我做一个echo $ var。它将它显示在一行中,空格分隔。 我希望输出中的每一行都是新的行分隔而不是空格。

Sample Output : 1 2 3

I want: 
1
2
3

请建议。

2 个答案:

答案 0 :(得分:2)

这是针对您的问题的独立测试案例:

$ cat script
var="1
2
3"

echo $var

$ bash script
1 2 3

此问题在Bash Pitfalls列表中都有提及,并由ShellCheck抓住:

$ shellcheck script
In script line 5:
echo $var
     ^-- SC2086: Double quote to prevent globbing and word splitting.

工作示例:

$ cat script
var="1
2
3"

echo "$var"

$ bash script
1
2
3

答案 1 :(得分:0)

for tok in $var; do
    echo $tok
done