誰かがシェルスクリプトの下の部分を説明してくれますか?これに関連してシェルスクリプト内の変数の前にある「#」の意味は何ですか?
END_POS=$((${#column}-$COLON_INDEX))
誰かがシェルスクリプトの下の部分を説明してくれますか?これに関連してシェルスクリプト内の変数の前にある「#」の意味は何ですか?
END_POS=$((${#column}-$COLON_INDEX))
、それはその変数の値の長さの略:
$ v="hello"
$ echo ${#v}
5
$ v="bye"
$ echo ${#v}
3
ので、このコマンドは何でしょうか?
END_POS=$((${#column}-$COLON_INDEX))
は$column
の値の長さを取得し、演算を実行する$(())
構文を使用して$COLON_INDEX
の値をsubstracts:
$ column="hello"
$ colon_index=2
$ r=$((${#column}-$colon_index)) # len("hello") - 2 = 5 - 2
$ echo $r
3
(() )は、標準のsh機能ではありません。 kshの があり、ksh、Bash、zshでのみ利用できます。 $(()) POSIXシェルでの置換が許可されています。予想通り、 $(()内の算術式の結果は に置き換えられます)。パラメータの置換の場合と同様に、算術 の置換は単語の分割の対象となるため、リストのコンテキストでは、 への引用を避ける必要があります。
私は考えることができる#
のすべての可能な用途:
それが配列の場合は、変数の値や要素の長さの略:
私は変数の値の長さをエコーしている、配列の長さそして配列の1番目のインデックス要素の長さは:
$ var="abcd"
$ echo "${#var}"
4
$ arr=('abcd' 'efg')
$ echo "${#arr[@]}"
2
$ echo "${#arr[1]}"
3
$
また$#
はあなたにスクリプト/関数に渡されるパラメータの数を示します。
私を助けてくれてありがとう.. –
確かに変数の値の長さ –
@EdHeal errr true:) – fedorqui