shell中数组怎么循环赋值,急

比如java中的:for(int i=1;i<=100;i++){ name[i]=i;}在shell中怎么实现?
2024-12-13 01:48:10
推荐回答(5个)
回答1:

Bash环境可以这样。

#!/bin/bash

for ((i=1;i<=100;i++))

do

name[$i]=$i

echo ${name[$i]} #为方便检查,加了打印

done

通用点的(符合POSIX标准)可以这样:

#!/bin/sh

declare -a name

for i in `seq 100`

do

name[$i]=$i

echo ${name[$i]} #为方便检查,加了打印

done

bash手册 arrays章节第一段话的某一句:

数组的大小没有上限,也没有限制在连续对成员引用和赋值时有什么要求。数组以整数为下标,从 0 开始。

使用cat的话可以这样:

cat 123.txt | while read line

do

echo "$line"

done

123.txt的每行读取到变量line中并输出。

回答2:

Bash环境可以这样。
#!/bin/bash
for ((i=1;i<=100;i++))
do
name[$i]=$i
echo ${name[$i]} #为方便检查,加了打印
done

通用点的(符合POSIX标准)可以这样:
#!/bin/sh
declare -a name
for i in `seq 100`
do
name[$i]=$i
echo ${name[$i]} #为方便检查,加了打印
done

回答3:

其实差不多
for((i=1;i<=100;i++))
do
name[$i]=$i;
done
shell里需要加 do 和done 限定循环的范围

回答4:

i=1;
while(test i -le 100)
do
name[$i]=$i;
i=$[$i+1];

done

回答5:

for((i=0; i<100; i++))
do
name[$i]=$i
done
echo ${name[@]}