我想创建与文件中的行数相等的多个变量,然后依次为文件中的每个变量分配一个值。
说,
file1 包含device1 device2 device3 .....
file2 包含olddevice1 olddevice2 olddevice3 .....
我想像我做echo $A = device1
一样做值
同样echo $B = device2
和echo $Z = device26
我尝试了一个for
循环,甚至一个数组,但无法通过它。
我尝试了以下操作:
iin=0
var=({A..Z})
for jin in `cat file1`
do
array[$iin]="$var=$jin";
iin=$(($iin+1));
var="$(echo $var | tr '[A-Y]Z' '[B-Z]A')"
printf '%s\n' "${array[@]}"
done`
答案 0 :(得分:0)
我相信您没有抓住重点:变量在编程语言中具有固定名称,例如$A
,$B
,...,$Z
:在编程时,您需要指定那些程序中的变量,您不能指望程序发明自己的变量。
您要寻找的是集合,例如数组,列表,...:
您创建了一个集合A
,并可以向其中添加值(A[n]=value_n
或A.SetAt(n, value_n)
,...,这取决于您使用的集合的类型。
答案 1 :(得分:0)
在bash
( v4 及更高版本)下,类似mapfile
的代码应该可以工作:
mapfile -O 1 -t array1 < file1
mapfile -O 1 -t array2 < file2
# output line #2 from both files
echo "${array1[2]}" "${array2[2]}"
# output the last line from both files
echo "${array1[-1]}" "${array2[-1]}"
注意:mapfile
仅加载一个数组,但有更多选择。
-O 1
将数组下标设置为从1
开始,而不是默认的0
;这不是必需的,但是它使代码更易于阅读。