[英]Bash array with each character of that array element as a character of a string
我試圖循環雖然bash中的數組。 數組為“ AARON”,當前該數組用ARON填充索引0。 我想這樣表現
ara [0] = A
ara [1] = A
ara [2] = R
ara [3] = O
ara [4] = N
我的腳本當前看起來像這樣。
#!/bin/bash declare count declare -a ara=(AARON) for name in {A..Z} do count=$((count++)) for char in ${ara[*]} do if [[ ${ara[char]} -eq $name ]] echo ${ara[char]} # for debugging purposes. then sum=$((sum + count)) fi done done echo $sum #for debugging purposes.
通常,我可以通過設置自定義IFS來實現此目的,但是我不知道如何對字符串的每個字符執行此操作。
您希望=
not -eq
用於字符串比較。
您的echo ${ara[char]}
行是if
測試的一部分,而不是if
正文的一部分。
您的count=$((count++))
分配無法正常工作(它始終將count
設置為零),或者您想要的是((count++))
或count=$((++count))
。
您可以使用${strvar:pos:count}
來獲取字符串的一部分。
所以像這樣:
#!/bin/bash
declare count
declare -a ara=(AARON)
for name in {A..Z}
do
((count++))
for ((i=0; i<=${#ara[0]}; i++))
do
echo ${ara[0]:i:1} # for debugging purposes.
if [[ ${ara[0]:i:1} = $name ]]
then
sum=$((sum + count))
fi
done
done
echo $sum # for debugging purposes.
我會做這樣的事情:
declare count
declare -a ara=(A A R O N)
for name in {A..Z}
do
for character in ${ara[*]}
do
if [[ ${character} == ${name} ]]
then
echo ${character} '=' ${name} # for debugging purposes.
let 'sum=sum+1'
fi
done
done
echo $sum #for debugging purposes.
您可以在每個字母中添加空格以在bash數組中轉換AARON。 此外,您可以使用“ let”增加計數器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.