誰でもこのシェルスクリプトを説明できますか?このスクリプトの段階を説明してください
#!/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[*]}
ありがとうございます。
誰でもこのシェルスクリプトを説明できますか?このスクリプトの段階を説明してください
#!/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[*]}
ありがとうございます。
すべての行を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)
あなたの投稿にフォーマットが本当に乱れています。再フォーマットされたスクリプトは次のとおりです。
#!/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
、それはそれは、アレイ内の項目数をうまくいく、その最初の発見は、文字列を配列にキャストどのように機能するかを記述するために、繰り返し処理とは、得られた配列をエコー表示します
私はあなたの宿題をしていないことを願っています! –