저는 Bash를 처음 접했고 제 질문에 답할 수 있는 좋은 튜토리얼을 찾을 수 없습니다.
array=( item1 item2 item3 )
for name in ${array[@]}; do
echo current/total
... some other codes
done
예상 출력으로 합계 값을 current
계산 하고 싶습니다 .total
1/3
2/3
3/3
어떤 팁이라도 주셔서 감사합니다.
답변1
예를 들어 다음을 사용하여 배열 인덱스에 액세스 ${!array[@]}
하고 를 사용하여 배열 길이에 액세스 할 수 있습니다.${#array[@]}
#!/bin/bash
array=( item1 item2 item3 )
for index in ${!array[@]}; do
echo $index/${#array[@]}
done
bash 배열은 다음과 같습니다.제로 인덱스, 실제로 다음을 얻게 됩니다.
0/3
1/3
2/3
카운트를 1부터 시작하려면 $index
로 바꾸면 됩니다 $((index+1))
. 네가 원한다면가치사용할 수 있는 인덱스, "${array[index]}"
즉
#!/bin/bash
array=( item1 item2 item3 )
for index in ${!array[@]}; do
echo $((index+1))/${#array[@]} = "${array[index]}"
done
주다
1/3 = item1
2/3 = item2
3/3 = item3
답변2
인덱스가 실제로 인덱스라고 생각하면 0 인덱싱은 완벽하게 유효합니다.오프셋배열의 기본 주소부터 시작합니다. 실제로 방언마다 다르지만 이것이 표준입니다. 이전 Jovial 언어에서는 [0]
배열의 최대 크기가 실제로 포함되었습니다. 그래서 로 시작합니다 [1]
.
0
일부 기본 구현의 경우 선택적으로 또는 1
첫 번째 인덱스로 사용할 수 있습니다 . 그리고 적어도 하나의 Basic을 사용하면 [n]
에서 까지의 인덱스 배열을 지정할 수 있습니다 [m]
. 여기서 n
sum은 . 보다 작거나 같으면 m
임의의 정수 값, 음수라도 될 수 있습니다 . 인덱스가 해당하는 것처럼 입력 값에서 해당 값을 뺍니다 .n
m
n
[index]
index-n = 0
n
그러나 자신의 코드에서 동일한 작업과 그 이상을 수행할 수 있습니다. 다음과 같이 배열의 순서를 반대로 바꿀 수도 있습니다.
dim array(0, abs(m-n));
step=sign(m-n);
if n > m then
base=m
else
base=n;
fi
이 코드 예제는 실제로 언어의 일부일 뿐입니다. 나는 그것을 더 읽기 쉽게 만들고 싶습니다. 단계 변수는 양수인지 음수인지에 따라 이동의 겉보기 방향을 제어하는 데 사용되며 배열에 들어가거나 나갈 때 실제로는 항상 양수인 유효 인덱스를 계산하는 데 사용됩니다 [0]
.