我正在寻找tcl暂停脚本的方法(例如在带有“puts”的一些输出之后)并等待用户按下一个键然后继续输出剩余的文本。
答案 0 :(得分:11)
您只需使用gets
从stdin中读取:
proc pause {{message "Hit Enter to continue ==> "}} {
puts -nonewline $message
flush stdout
gets stdin
}
pause "Hurry, hit enter: "; # Sample usage 1
pause; # Sample usage 2, use default message
答案 1 :(得分:4)
感谢Hai Vu的回答,如果你使用的是stty
proc anykey {{msg "Hit any key: "}} {
set stty_settings [exec stty -g]
exec stty raw -echo
puts -nonewline $msg
flush stdout
read stdin 1
exec stty $stty_settings
puts ""
}
puts 1
anykey
puts 2
链接到关于Tcl wiki的详尽讨论:Reading a single character from the keyboard using Tcl
答案 2 :(得分:0)
Windows的潜在解决方案:
// to set to fixed value
DB::table('pivot_table_name')->where('user_id', $user->id)->update(['times_seen' => 1]);
// to increment by one
DB::table('pivot_table_name')->where('user_id', $user->id)->increment('times_seen');
这也注意到非ascii按键(例如箭头键,Escape等)。
另一个解决方案是提出的Raw Mode on Windows Donal Fellows above (感谢链接!),可以归纳为 这两行代码:
exec -ignorestderr [file join $env(windir) system32 cmd.exe] /c pause
这没有注意到Escape,箭头键等(您可能需要稍后恢复控制台输入模式)。