私はスクリプトを作成し、ディレクトリサイズを抽出したいと思います。そこで私は理解していない奇妙な効果を見つけました。
私は "du"コマンドを使用しました:
> x=$(du mydir)
> echo $x
8192 mydir
今まではそんなに良くなった。しかし、今ではすべての文字を削除してサイズを抽出したいと思います。X最初のスペースから始めましょう。ところで、当時は理解できました。
> echo ${x%% *}
8192 mydir
8192だけではありません。
そのため、「du」によって生成されなかった他の変数で確認しました。
> y="8192 mydir"
> echo ${y%% *}
8192
これはなぜ適用されますか?ワイしかしそうではありませんX?私も確認しましたXそしてワイ同じ文字列です。
私はここで本当に混乱しています。誰かがこの質問に答えることができたら嬉しいですか?
ベストアンサー1
変数を二重引用符で囲むと、明らかに複数のスペースがあることがわかります。実際にはタブ文字ですが、一部のシステムではより明確に見えます。
echo "$x" | cat -e
したがって、タブ(またはスペース)をこの構造に一致させることで、最も長いシーケンスを削除できます。スペースやタブの後に何も含まれない"文字列値の末尾にバインド$x
echo "${x%%[[:blank:]]*}"