我的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}'