我定义了以下shell变量:
memory_params="some memmory params"
class_path="some class path"
class_name="some class name"
现在,我在awk中使用这些bash变量
awk -v var1="${memory_params}" \
-v var2="${class_path}" \
-v var3="${class_name}" \
'{
cmd="java var1 -cp var2 var3";
system(cmd);
}'
但是,由于显而易见的原因,这并没有取var1
,var2
和var3
的值。如何在双引号内使用awk变量?
答案 0 :(得分:2)
尝试一次,让我知道这是否有帮助。直接在system
命令中使用变量,而不是创建变量并将其传递给system
。
awk -v var1="${memory_params}" \
-v var2="${class_path}" \
-v var3="${class_name}" \
BEGIN'{
system("java " var1 " -cp " var2 OFS var3);
}'
如果您要阅读BEGIN
,请删除Input_file
。
答案 1 :(得分:0)
在我用来解决问题的命令下面,我也遇到过相同的情况。
database_impala = test_db awk -v var =“ $ {database_impala}”'{print var“。” $ 0}'