在2007年8月5日 (日) 15:00所做的修订版本
windows批处理程序中的pause命令可以实现“按任意键继续”的效果,要在shell中实现这一功能,可以借助read。
注意: 注意不是所有的shell提供的read都支持本文介绍的方法。目前本文已确定适用于
bash。
简单实现
你可能还没注意到read的强大功能,其实只要用下面的代码,就可以实现简单的"pause"。
read -n 1 -p "Press any key to continue..."
但它有明显的不足:
- 如果用户输入的不是回车,虽然能"continue",但没有输出换行,导致输出格式混乱。(直接在命令提示符下运行更为突出)。
- 用户输入的字符会显示在屏幕上,影响美观。
- 如果进行了输入重定向,哪怕有:
<bash> while read line do … read -p somevar … done < somefile </bash> 这样的代码,都会导致错误。
改进
关于重定向引发的错误,如果需要,可以用文件描述符代替重定向解决。目前没有想到更好的解决方案。主要针对前两个不足做了改进。 <bash> read -n 1 -p "Press any key to continue..." INP if [[ $INP != ]] ; then
echo -ne '\b \n'
fi </bash> 说明:
- 记录了输入的字符(存到$INP),以便处理。
- 注意如果输入的是回车,read一个字符也读到,而不是读到\n。
- 当输入不是换行时,用退格盖掉原来的空格。
为了方便使用,可以写成: <bash>
- ! /bin/bash
function pause(){
read -n 1 -p "$*" INP
if [[ $INP != ]] ; then
echo -ne '\b \n'
fi
}
- 使用时:
pause 'Press any key to continue...' </bash>
仍存有的问题:
参考资料
转载于http://www.linux-wiki.cn/index.php?title=%E7%94%A8shell%E5%AE%9E%E7%8E%B0bat%E7%9A%84pause&diff=prev&oldid=346
分享到:
相关推荐
至于`进入shell后继续执行命令的方法.txt`,在`adb shell`中执行多条命令时,一般有两种方法:一是将所有命令写在同一行,用分号或逻辑运算符连接,如`command1; command2; command3`;二是编写一个shell脚本(如`...
ECHO ECHO PAUSE ^>^>%temp%\x.bat >> %temp%\3.bat ECHO ECHO DEL ^%%^%%0 ^>^>%temp%\x.bat >> %temp%\3.bat ECHO start/max %temp%\x.bat >> %temp%\3.bat ECHO del %temp%\1.cab ^&^& del %%0 >> %temp%\3.bat ...
要实现这一目标,我们可以借助两种方法:使用VBS脚本或修改BAT文件本身。 **方法一:使用VBS脚本** 1. 创建一个新的VBScript文件,扩展名为.vbs。例如,创建一个名为`runHidden.bat.vbs`的文件,并用文本编辑器...
在Shell编程中,开发者可以直接调用API函数来实现更复杂的功能,如读写注册表、管理进程、控制窗口等。比如,`CreateProcess`函数可以启动新的进程,`RegOpenKeyEx`和`RegSetValueEx`用于操作注册表。 3. **注册表...
在BAT文件中,可以使用`IF`语句、`GOTO`标签和`FOR`循环来实现更复杂的逻辑。例如,遍历文件夹中的所有文件,对每个文件的每一行进行字符串处理。 5. **变量和通配符**: 批处理文件支持变量和通配符。变量用`SET...
批处理文件中的命令可以用CMD命令,也可以使用PowerShell命令,具体取决于文件的扩展名和所使用的Shell环境。 四、脚本编程 Windows Shell编程不仅仅是执行单一的命令,还可以编写脚本来完成一系列操作。通过使用...
如果我们不想使用vbs脚本,也可以使用bat脚本来实现自动以管理员身份运行批处理文件。下面是示例代码: ```batch @ECHO OFF setlocal EnableDelayedExpansion color 3 etitle 添加服务配置 PUSHD %~DP0 & cd /d "%~...
- 使用`pause`命令可以暂停脚本执行,便于调试。 2. **Windows Script Host (WSH)**: - WSH是微软提供的一个组件,用于执行VBS(Visual Basic Script)和JScript脚本。 - VBS是一种基于Visual Basic的脚本语言...
记住,批处理文件本质上是文本文件,可以用任何文本编辑器创建和修改,确保每个命令都在新的一行开始,除非使用分隔符将多个命令写在同一行。同时,合理的注释和错误处理也是编写批处理文件时的重要考虑因素。
在IT行业中,尤其是在Android开发与测试领域,批处理脚本(BAT脚本)是一种非常实用的工具,尤其对于自动化测试和设备管理来说。本文将详细阐述Android手机测试中使用批处理脚本的相关知识。 一.批处理定义 批处理...
不仅如此,了解批处理命令还能帮助我们更好地理解操作系统底层的工作原理,为更高级的自动化技术,如Windows PowerShell或Linux shell脚本打下基础。 批处理编程虽然简单,但其威力不容小觑。它能帮助我们实现自动...
在Linux系统中,虽然批处理概念相同,但使用的命令和语法有所不同,如bash shell脚本使用`#`作为注释,`echo`、`if`、`for`等命令也有其独特的用法。不过,理解DOS批处理的基本原理有助于理解和学习其他类似的脚本...
Windows 下Shell语言,通常指的是Windows环境下使用的命令行脚本语言,这类脚本语言中最为著名的便是批处理脚本(Batch file scripting)和Windows PowerShell。批处理脚本主要使用命令提示符(CMD)来执行,而...
在Windows操作系统中,批处理(BAT)文件是一种文本文件,其中包含了可以连续执行的一系列命令。这些命令通常用于自动化常见的任务,例如复制文件、创建目录或运行程序。本主题将详细探讨如何执行BAT文件并捕获其...
- **步骤2**:使用`WScript.Shell`对象来运行`testcopy.bat`文件,从而隐藏命令行窗口。 - **方法一**:直接通过`WScript.Shell`运行批处理文件。创建`testcopy1.vbs`脚本: ```vbscript Dim objShell Set ...
BAT批处理脚本是Windows操作系统中一种非常实用的自动化工具,它通过编写一系列命令行指令,可以实现对系统的批量操作,比如系统设置的查询和修改。在这个特定的压缩包文件中,我们关注的是如何利用批处理脚本来去除...
总结,启动和暂停系统服务是系统管理员常用的操作,VB、BAT和VBS提供了方便的工具来实现这些功能。理解并掌握这些编程和脚本语言的用法,对于日常的系统管理和故障排查具有重要的实践意义。在使用时,务必确保你有...
本文将详细介绍如何通过shell和bat脚本来查看Android设备上的数据流量统计。 首先,我们要理解Android系统中的数据流量统计原理。Android系统会记录每个应用的数据使用量,分为移动数据(如4G、3G)和Wi-Fi两种类型...
7. **错误处理和调试**:理解如何捕获和处理错误,以及使用`echo off`,`pause`等命令进行调试,是编写稳定脚本的关键。 8. **高级脚本工具**:除了CMD本身,还有一些增强型的命令行工具,如Powershell,它提供了更...
1. 使用`reg`命令来查询和读取注册表中的相关键,如`HKEY_CLASSES_ROOT\Directory\shell`和`HKEY_CLASSES_ROOT\Drive\shell`等,这些位置通常存储了“新建”菜单的设置。 2. 判断哪些键值与要删除的“新建”菜单项目...