b****e 发帖数: 906 | 1 Something like the following ... in 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
#*******************************
when run, it complains the following
calc_OSZICAR: line 88: val1=12: command not found
calc_OSZICAR: line 89: cal1=13: command not found
I actually expect the script to define val1, val2, val3, ... and cal1, cal2,
cal3, ... during the iteration. Anybody has any idea how to do this?
Many thanks! | z****s 发帖数: 192 | 2 像这样定义”val$iDAV“bash变量不可以吧。
你可以用二维数组(2D array)定义你的众多变量。
可以google一下,应该有很多实用的例子。 | b****e 发帖数: 906 | 3 谢谢兄台的指点。是好像不行,其中用到的概念是动态变量(dynamical variable)。
在网上查到可以用declare来强行定义,但要提取数据时还是需要做很多的手脚,所以
还是用数组方便一些。
【在 z****s 的大作中提到】 : 像这样定义”val$iDAV“bash变量不可以吧。 : 你可以用二维数组(2D array)定义你的众多变量。 : 可以google一下,应该有很多实用的例子。
|
|