以下は端末で実行したコードです。
[root@idm ~]# x="$(date +%d%m%y)"
[root@idm ~]# echo $x
270217
[root@idm ~]# echo ${#x}
6
誰かが出力がこの理由を理解するのを助けることができますか6
?#
本質的に、変数に対してどのようなことが行われますか?
答え1
パラメータの長さ、配列の要素数、または位置パラメータの数を返すパラメータ拡張。
シェルマニュアルをお読みください。以下はbash
マニュアルから抜粋した内容です。
${#parameter}
値の文字長が
parameter
置き換えられます。。またはのparameter
場合、置換された値は位置引数の数です。配列名で下付き文字がまたは場合、置換された値は配列内の要素の数です。インデックス配列名で下付き文字が負の場合、数値は引数の最大インデックスより大きい 1 に基づいて解釈されるため、負のインデックスは配列の末尾で逆に計算され、インデックス -1 は最後の要素を表します。 。*
@
parameter
*
@
parameter
そして、お願いしますインタラクティブなルートシェルで作業する習慣を持ち上げないでください。これはせいぜい危険で無謀なことです。sudo
注意して使用し、高い権限が必要な場合にのみ使用してください。bash
ルート以外の一般ユーザーであれば、確かに試してみてください。
ここ数年、私は手動で個々のユーザーを追加するためにインタラクティブなルートシェルだけを使用しました。これは2分の仕事でした。いいえ#
そのコンピュータでプロンプトを再確認する必要があります。
答え2
この#
演算子は変数の長さを返します。あなたの場合、可変長x
は6です。
これを見てくださいパラメータの置換より多くの情報を知りたいです。