awk中的变量

时间:2011-10-08 07:50:40

标签: bash awk

我的shell脚本中有以下行。

time mysqlshow -u$user -p$password |  egrep -v 'information_schema|performance_schema' | awk '{print "mysql -u$user -p$password -Bse \"drop database", $2, "\""}'

第一个$ user正在更改为username变量。但awk声明中的那个没有。我尝试使用和不使用转义字符添加双引号和单引号\但它不起作用。

2 个答案:

答案 0 :(得分:2)

您需要确保$user$password被双引号(")或任何内容(as @jkerian mentioned)包围,$2是用单引号(')包围,或者如果是双引号,则以反斜杠开头以生成\$2

试试这个(在我看来这是更清洁的):

time mysqlshow -u$user -p$password |
    egrep -v 'information_schema|performance_schema' |
    awk '{print "mysql -u'"$user"' -p'"$password"' -Bse \"drop database", $2, "\""}'

或者这个:

time mysqlshow -u$user -p$password |
    egrep -v 'information_schema|performance_schema' |
    awk '{print "mysql -u'$user' -p'$password' -Bse \"drop database", $2, "\""}'

或者这个:

time mysqlshow -u$user -p$password |
    egrep -v 'information_schema|performance_schema' |
    awk "{print \"mysql -u$user -p$password -Bse \\\"drop database\", \$2, \"\\\"\"}"

我知道这是一团糟。但它应该有用。

答案 1 :(得分:0)

$ 2需要传递给awk而不被shell解释。

用单引号围绕2美元。