スクリプトを実行するときの対話型および非対話型シェルの意味について混乱する

スクリプトを実行するときの対話型および非対話型シェルの意味について混乱する

私はこのコンテンツから次の内容を読みました。質問:

スクリプトが実行されるシェルは常に非対話型シェルですが、スクリプトはユーザーに値を求めるメッセージを表示して対話型シェルをシミュレートできます。

上記の説明が正しいかどうかはわかりませんが、次の説明が正しいようです。

  • スクリプトを実行してデータを入力できるシェルは対話型シェルです(引用文で言うように、対話型シェルの「エミュレーション」ではありません)。

  • データ入力を許可しないスクリプトを実行するシェルは非対話型シェルです。

どんな文が正しいですか?

答え1

スクリプトを実行するシェルは非対話型シェルです。

たとえば、非対話型シェルはまだread標準入力からデータを読み取ることができます。

標準入力が端末の場合、これはある程度の「相互作用」を提供できますが、スクリプトを実行するシェルを対話型にすることはありません。木曜日スクリプトしかし、それは「相互作用」になります。

このテキストは、次の2つを意味するために「インタラクティブ」という単語を使用しているため、混乱しています。

  1. シェルスクリプトを実行するために開始されたシェルは非対話型です(タスク制御がなく、基本的に独自のプロンプトを提供しないという点でなど)。これは、「ログインシェル」や「対話型シェル」などのシェルタイプを指す技術用語です。
  2. 同じスクリプトを介してデータをインポートする操作は、「対話型」にすることができます(たとえば、パイプやファイルから読み取らない場合)。ただし、標準入力からデータを取得するすべてのコマンドはインタラクティブと呼ぶことができます。 tr 'a-z' 'A-Z'それ自体では、すべての小文字のASCII文字を大文字に「対話式」に変換します。

関連情報