我尝试了这个,但它似乎不起作用。 请帮助谢谢
TEST_STRING= test
echo Starting awk command
awk -v testString=$TEST_STRING'
BEGIN {
}
{
print testString
}
END {}
' file2
答案 0 :(得分:2)
这里有两个问题:您实际上并没有分配给TEST_STRING
,而是在与变量值相同的参数中传递程序代码。这两个都是由空格和引用位于错误的地方引起的。
TEST_STRING= test
...不会为TEST_STRING
分配值。相反,它运行命令test
,将名为TEST_STRING
的环境变量设置为空值。
也许你想要
TEST_STRING=test
或
TEST_STRING=' test'
......如果空白是故意的。
其次,使用-v
将变量传递给awk,右侧应该是双引号,并且该值与要传递给awk(或其他值)的程序之间必须有不带引号的空格。也就是说:
awk -v testString=$TEST_STRING' BEGIN
...如果TEST_STRING
不包含空格,请将BEGIN
作为testString
值的一部分传递,而不是单独的参数!
awk -v testString="$TEST_STRING" 'BEGIN
另一方面, ... on确保TEST_STRING
的值作为testString=
的相同参数的一部分传递,即使它包含空格 - 并确保BEGIN
1}}作为单独参数的一部分传递。