簡體   English   中英

Bash數組,該數組元素的每個字符都作為字符串字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM