我的问题是,是否可以在awk脚本中分配bash变量.
即假设以下是我写的shell脚本,
declare -A sample_associative_array
awk -F'=' '{$sample_associative_array[$2]=$1}' /tmp/sample.txt
Run Code Online (Sandbox Code Playgroud)
给定/tmp/sample.txt有:
abc=0
def=1
Run Code Online (Sandbox Code Playgroud)
我试过了
echo $sample_associative_array[0]
Run Code Online (Sandbox Code Playgroud)
它不起作用.
任何帮助,将不胜感激.
干杯!
不完全相同,但您可以awk使用bash内置命令可以使用的输出字符串declare来填充关联数组.不过,我不完全确定你为什么要这样做.
$ declare $( awk -F'=' '{print "aa["$2"]="$1}' sample.txt )
$ echo ${aa[0]}
abc
$ echo ${aa[1]}
def
Run Code Online (Sandbox Code Playgroud)
你不能那样做。Awk 和 Bash 使用完全不同的变量范围,允许一个使用另一个中声明的变量将严重侵犯进程主权。
您想要做的事情可以通过使用参数扩展并删除前缀/后缀(例如${parameter#word}和 ) ,使用 Bash 非常简单地完成${parameter%word}。有关详细信息,请参阅 Bash 手册。
另外,Bash 中的数组引用使用其他语法:${sample_associative_array[0]}就是您想要的。