通常は自動化されたプロセスとして実行されるスクリプト(cron、Jenkinsなど)の動作を調査しています。スクリプトは、対話的に実行すると、(最終的に)動作が異なる(ユーザー入力を求める)コマンドを呼び出すことができます。たとえば、patch
リバースパッチで何をするかをsvn
尋ね、パスワードを要求しますが、非対話的に実行するとどうなるかを確認する必要があります。
patch
非インタラクティブであることを説得するのはかなり簡単です。stdout
非ttyになるようにリダイレクトする必要があります。
$ </dev/null > >(cat) /path/to/myscript --args
ただしsvn
、存在する場合は制御端末に接続します。渡すスクリプトを編集すること--non-interactive
は、実際にはオプションではありません。これはいくつかのレベルの深さから来ており、すべての呼び出しを見つけたと確信するのは難しいためです。
(/dev/tty
存在しないため)制御端末なしで、非対話的にスクリプト/コマンドを呼び出す方法はありますか?私はまだ端末に行くよりstdout / stderrを好みます。
(「非対話型シェルでスクリプトを実行する」という質問を見つけましたが、その答えはcronとユーザー環境の違いについて説明しています。非対話型以外のすべての違いはすでに排除しています。)