パスの最後のものに変数を設定しようとしていますが、その方法を理解できないようです。今、私はこれをしているが、それは動作しません:パスは〜/ 1/2/3だったのであれば、たとえば、私は最後の3に設定するのでしょうBashは他の変数のカットに変数を設定します
path=echo pwd
last=echo $path | rev | cut -d/-f 1 | rev
。 今、echo $last
を実行すると、出力されるのはすべて空白行です。
誰でも手助けできますか?ありがとう!
パスの最後のものに変数を設定しようとしていますが、その方法を理解できないようです。今、私はこれをしているが、それは動作しません:パスは〜/ 1/2/3だったのであれば、たとえば、私は最後の3に設定するのでしょうBashは他の変数のカットに変数を設定します
path=echo pwd
last=echo $path | rev | cut -d/-f 1 | rev
。 今、echo $last
を実行すると、出力されるのはすべて空白行です。
誰でも手助けできますか?ありがとう!
command substitution何を求めているとも呼ばれます。
last=$(pwd | rev | cut -d/-f 1 | rev)
echo "$last"
あなたはまた、同様に
last=`echo $PWD | awk -F "/" '{print $NF}'`
echo $last
または/最初に剥離するためにsedを使って以下のような簡単なawkコマンドを使用して同じことを達成することができます最後のディレクトリ名を印刷します。
last=`echo $PWD | sed 's/\// /g' | awk '{print $NF}'`
echo $last
変数PWDは既に埋め込まれていますので、c do
last=${PWD##*/}
echo "${last}"
この構文は私には新しくなったので、私はそれを調べました。中カッコ( "{}")はシェル展開を示します。 '##'はその展開がどのように起こるかに影響します。 '##'の後に来るものはパターンに展開され、展開された変数の先頭が一致すると削除されます。二重の「##」は最も長いマッチング部分を削除することを意味します。単一の '#'は最短部分を削除します。この場合、それは '* /'にマッチします。したがって、最後のスラッシュまでのすべてのものが現在のディレクトリ名だけを残します。 [詳細はこちら](http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion)ありがとう! –