使用awk分配变量的UNIX for循环

时间:2019-02-06 11:12:55

标签: unix awk

for i in `cat filename.lst|awk '{print $1}{print $2 > var1}'`
do
echo "$i and $var1"
done

但不起作用, 我有文件

xyz 123
abc 456
pqr 789

预期输出:-

xyz and 123
abc and 456
pqr and 789

2 个答案:

答案 0 :(得分:2)

您似乎正在寻找类似的东西

while read -r i value; do
    var1=$value
    echo "$i and $var1"
done <filename.lst

您要avoid reading lines with foruseless use of cat

Awk无法操纵Bash变量,并且Bash不知道Awk脚本中会发生什么。

如果您绝对坚持使用Awk,则希望它的输出是一个字符串,您可以从外壳程序中安全地eval

eval "$(awk '{ print "var1=\047" $2 "\047;\n" \
    "echo \"" $1 " and \$var1\"" }' filename.lst)"

“安全”的确切定义可能很难准确地加以界定。换句话说,真的就是不这样做。

答案 1 :(得分:0)

node('master'){
def gitTag="mytag"
sh "touch webservice_version.py"
sh "echo \\\"${gitTag}\\\"  > webservice_version.py"
sh "cat webservice_version.py"
}

如果这还不是您想要的,那么请编辑您的问题以阐明您的要求并提供更真实的示例。