私はGitのリモートストレージアドレスを変更しようとしていますが、|
パイプ()について混乱しています。
2つの違いは何ですか?最初のオプションが機能しないのはなぜですか?
# Doesn't work
git remote get-url origin | sed 's/old/new/' | git remote set-url origin
# Works
git remote set-url origin $(git remote get-url origin | sed 's/old/new/')
答え1
答えは、git remote set-url
コマンドラインに最後の引数(実際のURL)が必要であることです。いいえ標準入力として使用されます。最初の行(パイプ付きの行)はURLを標準入力として提供しようとします。
2行目のOTOHは、URLをコマンドライン引数(最後のエントリ)として最上位のコマンドにほぼ正確に挿入します。
1ここで不要な分割+グローブを防ぐために、コマンドの置き換えの周りに二重引用符を忘れました。