次のbash機能を説明してください

次のbash機能を説明してください

この機能をオンラインで見つけました。ディレクトリを作成し、ディレクトリを変更します。

しかし、私はそのすべての部分を知りたいです。

function mkdircd () { mkdir -p "$@" && eval cd "\"\$$#\""; } 

答え1

名前のリストを渡すことができます。各ディレクトリのディレクトリを作成し、CDに入ります。最後一つ。

これは必要ありませんeval。私は次のように書きます:

mkdircd () { mkdir -p "$@" && cd "${!#}"; }

${!#}使用間接拡張$#はパラメータの数なので、${!#}最後のパラメータの値です。

答え2

mkdir -p "$@"名前が引数($@)に渡されるすべてのディレクトリを作成します。

-pこのオプションを使用すると、ディレクトリが存在しないディレクトリにある場合にディレクトリを再帰的に作成できます。

eval cd "\"\$$#\""最後のディレクトリに移動します。$#渡された引数の数を提供し、これは\$$#最後の引数(たとえば、引数として渡された最後のディレクトリ名)を提供します。たとえば、3つのパラメータがある場合、$#コマンド3eval実行されますcd "$3"

コマンドは実際になければなりません。多くのシェルは引数1と同じ値を引数10の値として扱うため、eval cd "\"\${$#}\""多くのシェルで中括弧が必要です。"$10"0

関連情報