
echo aaa | ./start.sh
上記のようなことをした際、
./start.shに
stty -echo
等のsttyコマンドがあると、
stty: : そのようなデバイスもアドレスもありません。
というメッセージが出力されます。
(実際には正常に処理されています。)
start.shは文末のようなものです。
これを実行すると
% echo aaa | ./start.sh
stty: : そのようなデバイスもアドレスもありません。
please input password:
stty: : そのようなデバイスもアドレスもありません。
aaa
%
となり、「aaa」はちゃんと渡せています。
■質問1
なぜこのようなエラーが出るのか。
■質問2
なぜ上記のようなエラーが出ているのに、
値が渡せているのか。
参考になるような情報でもかまいませんのでよろしくお願いします。
start.sh
#!/bin/sh
stty -echo
echo "please input password:"
read PASSWORD
stty echo
echo $PASSWORD
No.1ベストアンサー
- 回答日時:
>なぜこのようなエラーが出るのか。
stty は標準入力デバイスの設定を表示・変更するコマンドです。デバイスが端末であることを前提としています。パイプにすると標準入力が端末で無くなるのでコマンドが想定していないためエラーになります。
>なぜ上記のようなエラーが出ているのに、値が渡せているのか。
sttyコマンドだけがエラーなので、それ以外の行は正常に実行されます。
echo "please input password:"
read PASSWORD
echo $PASSWORD
は、正常に実行されるため、入力データが表示されることになります。
stty コマンドをシェルスクリプト中で使うときは、test コマンドで、標準入力が端末かどうか調べて、端末のときだけ実行されるようにします。
test -t 0 && stty -echo
もしくは、
if test -t 0
then stty -echo
fi
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ワイルドカードを使ってでフォ...
-
shutdownコマンドをキャンセル...
-
[バッチファイル]レジストリ値...
-
compressコマンドってなくなっ...
-
Excel下部のメニューが消えた
-
grep 検索 検索対象の行と、そ...
-
echo $!の意味を教えてください
-
「環境変数名の編集」ウィンド...
-
Solarisでiノード数を確認する...
-
VBAを使って電源を切るには?
-
外部コマンド、組み込みコマン...
-
mv コマンドのエラーコード
-
@EOD
-
browstat を実行したい
-
gemコマンド yumコマンド
-
コマンドプロンプトでの作業ロ...
-
コマンドを打ち終えたた後は
-
dig/host/nslookup コマンド...
-
windowsでcatコマンド
-
Linuxコマンドは何の言語で書か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
shutdownコマンドをキャンセル...
-
UNIX コマンドにおける # や円...
-
至急です、Ubuntuに詳しい方助...
-
ワイルドカードを使ってでフォ...
-
SCコマンドでアクセス拒否
-
コマンドプロンプトにおけるコ...
-
Linuxコマンドは何の言語で書か...
-
compressコマンドってなくなっ...
-
[バッチファイル]レジストリ値...
-
Excel下部のメニューが消えた
-
AIXでの文字コード、改行コード...
-
vbaで「最前面に」とする方法は?
-
Linuxでコマンドが終了しない
-
「環境変数名の編集」ウィンド...
-
UNIXのコマンドが使えないんです
-
アクセスのボタンから指定のワ...
-
JP1での保留Job一覧取得につき...
-
windows10を使っています。 wsl...
-
Solarisでiノード数を確認する...
-
レコーダー換装用のHDDのAVコマ...
おすすめ情報