Bash解析变量值

时间:2018-03-02 15:57:11

标签: bash

我有一个命令,它返回108套周/枚举:

命令:

impala-shell -B -f query.sql

结果:

20180203        1
20180127        2
20180120        3
...

我解析了结果并将周和枚举读作两个变量。但是,我必须首先使用变量wk来存储中间结果:

wk="$(impala-shell -B -f query.sql)"
echo "$wk" | while read -r a b; do echo $a--$b; done

我尽量避免使用其他变量wk

"$(impala-shell -B -f query.sql)" | while read -r a b; do echo $a--$b; done

但它回来了:

...
20160213        104
20160206        105
20160130        106
20160123        107
20160116        108: command not found

我知道您可以使用wk="$(impala-shell -B -f query.sql)" && echo "$wk" | while read -r a b; do echo $a--$b; done,但这并不能避免在中间使用变量。如何在不使用变量wk

的情况下撰写单行代码

3 个答案:

答案 0 :(得分:1)

awk救援!

$ impala-shell -B -f query.sql | awk '{print $1"--"$2}'

答案 1 :(得分:0)

使用特殊引号“

时,可以先执行命令(内联)

试试这个(未经测试,因为我既没有你的shell,也没有那个脚本):

`impala-shell -B -f query.sql` | while read -r a b; do echo $a--$b; done

答案 2 :(得分:0)

在问题评论中,最优雅的答案是choroba!你只需要删除引号!

impala-shell -B -f query.sql | while read -r a b ; do echo $a--$b; done