${#arrayname[@]}
を実行すると、bashで配列の長さを取得できることがわかります。
私の質問は、私が覚えなければならないことか、この構文を分かりやすい部分に分解できますか?たとえば、@
というシンボルは、インデックスの検索場所を意味していますか?なぜ#
?
${#arrayname[@]}
を実行すると、bashで配列の長さを取得できることがわかります。
私の質問は、私が覚えなければならないことか、この構文を分かりやすい部分に分解できますか?たとえば、@
というシンボルは、インデックスの検索場所を意味していますか?なぜ#
?
#
を行うことによって得ることができる取得することを意味し変数の値の長さ。通常の変数の場合は、文字の長さを意味します。 #
は「数字」の記号なので、これは「変数の中のものの数」を意味しています。
@
または*
は、特定の要素ではなく配列全体を使用することを意味し、文字数を返す代わりに配列要素の数を返します。 *
は多くのコンテキストでワイルドカードとして使用されるため、これは覚えやすいはずです。また、$*
と[email protected]
は、シェルスクリプトへのすべての引数を意味するため、すべての配列要素との並列性が明白である必要があります。
あなたは添字なし配列変数を使用する場合、それは配列の要素0
と同等ですので、あなただけの${#arrayname}
を書き込むことはできません。したがって、${#arrayname}
は${#arrayname[0]}
と同じです。これは、配列の最初の要素の文字数です。
'@'は '*'と同じように動作します。特定のインデックスを提供する代わりに、これは完全なものを参照します。
「#」は、フォーム${#PARAMETER}
の一般的な使用法で長さ
https://www.cyberciti.biz/faq/finding-bash-shell-array-length-elements/
それを手に入れた - 感謝を! –
は文字とパラメータの値のNOTバイトの数で長さを返したいのbashを語っています。
myString="Hello StackOverflow!"
printf "%s\n" "${#myString}"
20
しかし、アレイの、この拡張タイプは、2つの意味があります個々の要素について
@
と*
それ は、アレイ内の組の要素の数を報告myArray=(1 2 3 4 15)
printf "%s\n" "${myArray[@]}" # <-- Gives me list of elements
1
2
3
4
15
printf "%s\n" "${#myArray[@]}" # <-- Gives me number of elements
5
それは今面白い、配列の上に例を考えてみましょう、最後の要素2
の長さは、変数の参照の先頭に
printf "%s\n" "${#myArray[4]}"
2
覚えておいてください。 :) #
は通常の番号を意味します。例えば
$#
からarr
${#arr}
配列の長さ(要素の数) - - 第1要素の長さの文字列$str
${#arr[@]}"
の長さ - 引数${#str}
の数であります配列の(str
のように)残念ながら、${parameter#word}
または${parameter##word}
には、の数字はありません。です。 (。それは
parameter
の初めから
word
最短/最長を削除し、また、
# ....
はコメントです;)
これは役に立ちます - ありがとう! –