【问题标题】:Assign value to a variable in a for loop via KornShell在 Korn Shell 的 for 循环中为变量赋值
【发布时间】:2012-04-25 17:35:45
【问题描述】:

我在尝试为循环中的变量赋值时遇到问题。这就像在变量中使用变量一样。所以我创建了一个数组来添加值,但还是有问题。

请查看以下 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】:
    ${values[$a]}="$(cksum $files)"
    

    这几乎肯定不是你想要的。试试:

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

    ${array[index]} 指的是(仍然为空的)数组条目的value,所以原行 导致 shell 尝试执行="$(cksum $files)"

    【讨论】:

      猜你喜欢
      • 2016-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-27
      • 2014-01-21
      • 2013-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多