通过KornShell将值分配给for循环中的变量

问题描述 投票:0回答:1

尝试在循环中为变量分配值时遇到问题。就像在变量内部使用变量一样。所以我创建了一个数组来添加值,但仍然有些不正确。

[请看下面的KornShell(ksh)脚本,让我知道我在哪里搞乱了

#!/usr/bin/ksh
set -A array $1 $2 $3
set -A values
typeset -i a

a=0;
for files in ${array[@]}
do
cd ~/shell_lib
ls | grep $files
${values[$a]}="$(cksum $files)" 
a=$a+1
done

echo ${values[@]}

输出


$ ./intarray.sh forall.sh name.sh 
forall.sh
./intarray.sh[12]: =3311936491 251 forall.sh:  not found
name.sh
./intarray.sh[12]: =3294813710 338 name.sh:  not found

该文件已经存在,并且已经完成了cksum,但是仍然显示未找到!我不明白什么是错!有见识吗?

linux shell unix variables ksh
1个回答
1
投票
${values[$a]}="$(cksum $files)"

几乎可以肯定这不是您想要的。试试:

values[$a]="$(cksum $files)" 

${array[index]}表示(仍然为空)数组条目的value,因此原始行导致shell尝试执行="$(cksum $files)"

© www.soinside.com 2019 - 2024. All rights reserved.