変数の展開で、変数の前にある「#」演算子は何をしますか?


12

以下は私がターミナルで実行したコードです

[root@idm ~]# x="$(date +%d%m%y)"    
[root@idm ~]# echo $x
270217
[root@idm ~]# echo ${#x}
6

誰かが出力がなぜであるかを理解するのを手伝ってくれる6#基本的に変数に対して何をしていますか?

回答:


25

これは、パラメーターの長さ、配列内の要素の数、または位置パラメーターの数を返すパラメーター展開です。

シェルのマニュアルを読んでください。以下はbashマニュアルからのものです:

${#parameter}

値の文字長parameterが代入されます。場合parameterである*又は@、置換値は、位置パラメータの数です。parameter*または@で添字された配列名の場合 、置換される値は配列内の要素の数です。parameterが負の数を添え字とするインデックス付き配列名の場合 、その数はパラメーターの最大インデックスよりも1大きいと解釈されるため、負のインデックスは配列の最後から数え、-1のインデックスは最後の要素を参照します。 。


また、インタラクティブなrootシェルで作業する習慣をつけないでください。せいぜい危険で無謀です。管理者sudo特権を必要とする状況でのみ、慎重に使用してください。遊んでbashみることは、通常の非rootユーザーとして間違いなくできることです。

ここ数年、私は自分用に1人のユーザーを手動で追加するために対話型のルートシェルを使用しました。それは2分の仕事であり、それから私#その機械で二度とプロンプトを見る必要ありません


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.