簡體   English   中英

stty:標准輸入:設備的 ioctl 不合適

[英]stty: standard input: Inappropriate ioctl for device

perl script.pl --f1="t1" --f2="t2" --f3="t4" --f4 < /home/joe/a.txt 

腳本文件

use Getopt::Long;
my ($f1, $f2, $f3, $f4) ;
GetOptions (
            'f1=s' => \$f1,
            'f2=s' => \$f2,
            'f3=s' => \$f3,
            'f4' => \$f4, );
if ($f1) {
    system('stty -echo');
    print "Password:";
    $pwd = <STDIN>;
    system('stty echo');
}

我收到此錯誤:

stty: standard input: Inappropriate ioctl for device
Password:stty: standard input: Inappropriate ioctl for device

這是什么錯誤? 我該如何解決?

我認為問題在於您正在從重定向的 STDIN 中讀取數據(因為您是 <file.txt)

$ perl -e 'system("stty -echo");' </tmp/foo
stty: standard input: Inappropriate ioctl for device

您可能應該將您的文件作為參數傳遞給您的腳本。

這個消息對於用戶和程序員來說是痛苦的 它會污染 STDOUT,有時會連續 3 次。

沒有辦法抑制它,即使弄亂了stty -echo東西。

唯一的解決方案是將所有錯誤重定向到/dev/null

./myscript <<< "some stuffs" 2> /dev/null
Or similary
echo "stuffs" | ./myscript 2> /dev/null

煩人,因此扔掉所有潛在的錯誤,這是根本不想要的

not wanted at all.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM