一連の端末コマンド、各コマンドはファイルが存在するときに実行されます。

一連の端末コマンド、各コマンドはファイルが存在するときに実行されます。

他の質問でこれを見つけましたが、似たようなものが見つからないようです。ところでこれは本当に役に立つ内容のようです。

私のZSHフラグメント/エイリアスに1つを設定してgit add .チェーンで3つのことをしたいと思います。

  1. パスが./readme.md存在する場合は、次を実行します。医者(npmからグローバルにCLIアプリケーションをインストールします。)もしなければ、何もせずに次のステップに進みます。
  2. パスが./changelog.md存在する場合は、別のローカルCLIインストールスクリプト(名前と仮定changelogupd)がそのパスで実行されます。もしなければ、何もせずに次のステップに進みます。
  3. 前の結果に関係なく、以下を実行します。git add .

今私に二つ次のエイリアスで接続されたコマンドと.zshrc連携します。

path-exists ./readme.md && doctoc readme.md && git add . || git add .

しかし、私は欲しいサム:2つのパスチェックと条件付き呼び出しプラスgit add .


ちなみに。path-existsはいパスが存在します -cli、npmを介して世界中でインストールされます。

3つのコマンドチェーンはトリッキーに見えます。以下は、私が探しているものを大まかに示す無意味なマッシュアップです。

path-exists ./readme.md && doctoc readme.md && git add . || path-exists ./changelog.md && changelogupd changelog.md && git add . || git add .

デュアルパイプを使用して4つのケースをすべて処理する必要がありますか?

  1. readme存在しない、changelogしかもgit add .
  2. readme存在しない、存在しない、存在しない、存在しない、存在しない、存在しない、存在しない、存在しない、存在しchangelogないgit add .
  3. どちらもreadme存在しchangelog、しかもgit add .
  4. いいえreadmechangelog今はgit add .

)

それとももっと簡単な方法がありますか(またはnpm CLIライブラリまたはいくつかの秘密の端末コマンド)。

ところで、これはMac端末で実行されています。ありがとうございます。

答え1

ただ関数を書く:

my-git-add-.() {
  [ -e readme.md ] && doctoc readme.md
  [ -e changelog.md ] && changelogupd changelog.md
  git add .
}

答え2

path-exists ./readme.md    && { doctoc       readme.md;    :; } || \
path-exists ./changelog.md && { changelogupd changelog.md; :; }
git add .

目的の効果を得るには、コマンドをグループ化する必要があります。この:ステートメントは、dococが失敗する可能性がある場合に真のエンディングを提供するために追加されました。

関連情報