私は、次のコードは、文字列の最後のディレクトリを削除し各1バッシュ変数の展開
dirs="/home /home/a /home/b /home/a/b/c"
の後にスペースを持つディレクトリで構成された文字列を持っています。
dirs=${dirs% * }
これは1つのディレクトリのみが文字列であるときを除いて、すべてのケースで動作し、それはそれの前にスペースを持っていないので、それはそれは削除されません。
これを修正する簡単な方法があると確信していますが、私は立ち往生しています。
可能であれば、if文を使用しない1行の方法が望ましいです。
おかげ
クールで、何が起こっているのかわかりにくいです。私が正しいかどうか教えてください。 – slicedtoad
...私のコメントの残りの部分に何が起こったのか分かりません。とにかく、#dirs [@]は文字列を単語の配列に変換し、-1はそれを1文字ずつ短縮します。 – slicedtoad
'$ {#dirs [@]}'は配列の長さを返します。 '$ {dirs [@] ::}'は配列をスライスします。したがって、最後の要素を配列からスライスします。 –