类似BASH中的以下内容
iDAV=0
for line in $(cat file); do
IFS_bk=$IFS; IFS=' '; arr=($line)
if [[ ${arr[0]} == *'DAV'* ]]; then
iDAV=$(( $iDAV+1 ))
val$iDAV=${arr[0]}
cal$iDAV=${arr[1]}
fi
IFS=$IFS_bk
done
运行时,会抱怨以下
calc_OSZICAR: line 88: val1=12: command not found
calc_OSZICAR: line 89: cal1=13: command not found
我实际上希望脚本在迭代期间定义val1, val2, val3, ...
和cal1, cal2,
cal3, ...
。任何人都知道如何做到这一点?
非常感谢!
答案 0 :(得分:0)
您可以使用declare
指令创建动态变量:
declare "val$iDAV"="${arr[0]}"
declare "cal$iDAV"="${arr[1]}"
答案 1 :(得分:0)
使用eval。 运行此示例脚本:
iDav=1
eval val$iDav=333
eval echo \$val$iDav