我有一个具有此命令的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
请建议。
答案 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