從Debian上運行的腳本讀取用戶輸入時,我發現用戶輸入只有在按下Ctrl-D之後纔會終止,而不是在按Enter/Return鍵之後終止。用戶輸入僅在Ctrl D而不是換行時終止
my $userchoice = <>;
對於我的腳本,我要求用戶輸入文本並用Return/Enter鍵結束它。在我的腳本中可能會導致這種情況?
可以在我的腳本中提前設置slurp模式與此有關嗎?
我看了一下perdoc,但是找不到解釋。
sub InteractiveMenu {
for my $key(0 .. $#desclist) {
my $value = $desclist[$key];
printf (" %-3s %-20s -> %-15s -> %-30s\n", $key, $desclist[$key], $iplist[$key], $filelist[$key]);
}
print "\nAvailable choices:\n";
printf " (R)oot key installation [installs your public key to remote servers]\n";
printf " (S)etup remote logging [sets up user account on remotes]\n\n";
print "Choose a server to work on:\n";
chomp(my $userchoice = <>);
}
sub ListRemotes {
print "Listing remote servers from $Confile\n";
open my $ReadHandle, "<", $Confile or die $!;
local $/; # enable localized slurp mode
chomp(my $content = <$ReadHandle>);
close $ReadHandle;
my @values = split('zone ', $content);
foreach my $val (@values) {
#print $val."\n-------------------------\n";
&ListWorker($val);
}
InteractiveMenu();
}
什麼你已經張貼會讀一個回車終止一行。它不需要Ctrl-D。 – geoffspear
它會不斷請求用戶輸入,直到按下Ctrl-D,至少在我的Debian bash shell中。 – Droidzone
顯示您的實際代碼。 – geoffspear