传递给awk使用的shell脚本的变量



我的bash脚本中有以下内容(由另一个将变量传递给它的脚本调用(:

psql -qtAX -h "$1" -p "$2" -U "$3" -d "$4" -f "/script/test.sql"

我现在想将其更改为:

psql -qtAX -h "$1" -p "$2" -U "$3" -d "$4" -f "/script/test.sql" |
awk {print "$2"}'

然而,这并没有给我正确的输出,因为awk使用的变量$2默认为传递给脚本的变量$2(在下面的示例中为5432(的值(而不是从管道输出中获取(。

psql -qtAX -h testhost -p 5432 -U user -f "/script/test.sql" |
awk {print "$2"}'

我如何使它从管道输出中获得2美元的值?

你很接近。awk脚本通常是单引号的,以避免awk字段变量的shell插值(变量替换(。在您的情况下,$2对shell是有意义的,因此它必须用单引号转义。

试试这个:

psql -qtAX -h "$1" -p "$2" -U "$3" -d "$4" -f "/script/test.sql" | awk '{print $2}'

最新更新