2011-04-23 19 views
0

誰でもこのシェルスクリプトを説明できますか?このスクリプトの段階を説明してください

 
    #!/bin/bash 
    read a 
    STR=" $a " 
    ARR=($STR) 
    LEN=${#ARR[*]} 
    LAST=$(($LEN-1)) 

    ARR2=() 
    I=$LAST 
    while [[ $I -ge 0 ]]; do 
     ARR2[ ${#ARR2[*]} ]=${ARR[$I]} 
     I=$(($I-1)) 
    done 

    echo ${ARR2[*]} 

ありがとうございます。

答えて

2

すべての行をexaplainにコメントしました。

#!/bin/bash 
read a # Reads from stdin 
STR=" $a " # concat the input with 1 space after and three before 
ARR=($STR) # convert to array? 
LEN=${#ARR[*]} # get the length of the array 
LAST=$(($LEN-1)) # get the index of the last element of the array 

ARR2=() # new array 
I=$LAST # set var to make the first, the last 

while [[ $I -ge 0 ]]; do # reverse iteration 
    ARR2[ ${#ARR2[*]} ]=${ARR[$I]} #add the array item into new array 
    I=$(($I-1)) # decrement variable 
done 

echo ${ARR2[*]} # echo the new array (reverse of the first) 
1

あなたの投稿にフォーマットが本当に乱れています。再フォーマットされたスクリプトは次のとおりです。

#!/bin/bash 

read a 
STR=" $a " 
ARR=($STR) 
LEN=${#ARR[*]} 
LAST=$(($LEN-1)) 

ARR2=() 
I=$LAST 
while [[ $I -ge 0 ]]; 
    do ARR2[ ${#ARR2[*]} ]=${ARR[$I]} 
    I=$(($I-1)) 
done 

echo ${ARR2[*]} 

単語のリストをめくるのは何ですか?その後、Iを減少することにより、後方

配列による
$ echo "a b c d e f" | ./foo.sh 
f e d c b a 

$ echo "The quick brown fox jumps over the lazy dog" | ./foo.sh 
dog lazy the over jumps fox brown quick The 

、それはそれは、アレイ内の項目数をうまくいく、その最初の発見は、文字列を配列にキャストどのように機能するかを記述するために、繰り返し処理とは、得られた配列をエコー表示します

+0

私はあなたの宿題をしていないことを願っています! –