私は、このようなラインをお読みください。bashスクリプトの配列名の前には何がありますか?
arrayA=$((${#arrayB[@]}+${#arrayC[@]}));
それは何をしますか?特に配列名の前には#
という意味がありますか?
私は、このようなラインをお読みください。bashスクリプトの配列名の前には何がありますか?
arrayA=$((${#arrayB[@]}+${#arrayC[@]}));
それは何をしますか?特に配列名の前には#
という意味がありますか?
${#a[@]}
の数に展開する長さの和+
を持った算術拡張構文であります配列内の要素a。 Shell Parameter Expansion section of the reference manualを参照してください。
ありがとう@gniourf_gniourf、この行は全体的に何ですか?私は2つの配列を使ってターミナルでrhsを実行しようとしましたが、結果をコマンドとして実行しようとしていますか?これは
$((...))
がarithmetic contextです...私には意味がありません。${#arrayB[@]}
および${#arrayC[@]}
は、それぞれarrayB
およびarrayC
の要素の数に拡張されます。$((${#arrayB[@]}+${#arrayC[@]}))
は、arrayB
との要素数の合計に拡張されます。それをecho $((${#arrayB[@]}+${#arrayC[@]}))
で確認してください。arrayA
に、arrayB
とarrayC
の要素数の合計を割り当てます。デモ:
$ arrayB=(one two three)
$ arrayC=(alpha beta gamma delta)
$ echo "${#arrayB[@]}"
3
$ echo "${#arrayC[@]}"
4
$ echo "$((${#arrayB[@]} + ${#arrayC[@]}))"
7
$ arrayA=$((${#arrayB[@]} + ${#arrayC[@]}))
$ echo "$arrayA"
7
ライン:
arrayA=$((${#arrayB[@]}+${#arrayC[@]}));
読み込み:set the value of variable arrayA as the summed length of arrayB and arrayC
$(())
は、2つの配列が${#array[@]}
'$ {#[@]}' '配列A'における要素の数に展開。リファレンスマニュアルの[_Shell Parameter Expansion_セクション](https://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion) –
ありがとう@gniourf_gniourf、この行は何ですか全体の中で?私は2つの配列を使ってターミナルでrhsを実行しようとしましたが、結果をコマンドとして実行しようとしていますか?これは私に意味をなさない... –
'$((...))'は算術コンテキストです。 '$ {#arrayB [@]}'と '$ {#arrayC [@]}'はそれぞれ 'arrayB'と' arrayC'の要素の数に展開されます。したがって、 '$ {($ {#arrayB [@]} + $ {#arrayC [@]}))'は 'arrayB'と' arrayC'の要素数の合計に展開されます。それを 'echo $(($ {#arrayB [@]} + $ {#arrayC [@]}))'でチェックしてください。したがって、あなたのスニペットは 'arrayB'と' arrayC'の要素数の合計を 'arrayA'変数に代入します。 –