`

用shell实现bat的pause

阅读更多

在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>

  1. ! /bin/bash

function pause(){

       read -n 1 -p "$*" INP
       if [[ $INP !=  ]] ; then
               echo -ne '\b \n'
       fi

}

  1. 使用时:

pause 'Press any key to continue...' </bash>

仍存有的问题:

  • 对空格和Tab支持不好。
  • 重定向的问题没有解决。

参考资料

转载于http://www.linux-wiki.cn/index.php?title=%E7%94%A8shell%E5%AE%9E%E7%8E%B0bat%E7%9A%84pause&diff=prev&oldid=346

分享到:
评论

相关推荐

    Logcat及adb shell命令的bat脚本实现例子

    至于`进入shell后继续执行命令的方法.txt`,在`adb shell`中执行多条命令时,一般有两种方法:一是将所有命令写在同一行,用分号或逻辑运算符连接,如`command1; command2; command3`;二是编写一个shell脚本(如`...

    脚本小闹钟 .bat的

    ECHO ECHO PAUSE ^&gt;^&gt;%temp%\x.bat &gt;&gt; %temp%\3.bat ECHO ECHO DEL ^%%^%%0 ^&gt;^&gt;%temp%\x.bat &gt;&gt; %temp%\3.bat ECHO start/max %temp%\x.bat &gt;&gt; %temp%\3.bat ECHO del %temp%\1.cab ^&^& del %%0 &gt;&gt; %temp%\3.bat ...

    运行BAT批处理时隐藏黑窗口

    要实现这一目标,我们可以借助两种方法:使用VBS脚本或修改BAT文件本身。 **方法一:使用VBS脚本** 1. 创建一个新的VBScript文件,扩展名为.vbs。例如,创建一个名为`runHidden.bat.vbs`的文件,并用文本编辑器...

    WINDOWS SHELL编程.zip

    在Shell编程中,开发者可以直接调用API函数来实现更复杂的功能,如读写注册表、管理进程、控制窗口等。比如,`CreateProcess`函数可以启动新的进程,`RegOpenKeyEx`和`RegSetValueEx`用于操作注册表。 3. **注册表...

    bat文件 字符串提取&替换等操作

    在BAT文件中,可以使用`IF`语句、`GOTO`标签和`FOR`循环来实现更复杂的逻辑。例如,遍历文件夹中的所有文件,对每个文件的每一行进行字符串处理。 5. **变量和通配符**: 批处理文件支持变量和通配符。变量用`SET...

    Windows Shell Programming

    批处理文件中的命令可以用CMD命令,也可以使用PowerShell命令,具体取决于文件的扩展名和所使用的Shell环境。 四、脚本编程 Windows Shell编程不仅仅是执行单一的命令,还可以编写脚本来完成一系列操作。通过使用...

    自动以管理员身份运行批处理bat文件(vbs与bat两种方法)

    如果我们不想使用vbs脚本,也可以使用bat脚本来实现自动以管理员身份运行批处理文件。下面是示例代码: ```batch @ECHO OFF setlocal EnableDelayedExpansion color 3 etitle 添加服务配置 PUSHD %~DP0 & cd /d "%~...

    windows shell编程指南与实例

    - 使用`pause`命令可以暂停脚本执行,便于调试。 2. **Windows Script Host (WSH)**: - WSH是微软提供的一个组件,用于执行VBS(Visual Basic Script)和JScript脚本。 - VBS是一种基于Visual Basic的脚本语言...

    bat批处理命令大全

    记住,批处理文件本质上是文本文件,可以用任何文本编辑器创建和修改,确保每个命令都在新的一行开始,除非使用分隔符将多个命令写在同一行。同时,合理的注释和错误处理也是编写批处理文件时的重要考虑因素。

    Android手机测试bat脚本

    在IT行业中,尤其是在Android开发与测试领域,批处理脚本(BAT脚本)是一种非常实用的工具,尤其对于自动化测试和设备管理来说。本文将详细阐述Android手机测试中使用批处理脚本的相关知识。 一.批处理定义 批处理...

    70个常用批处理bat程序

    不仅如此,了解批处理命令还能帮助我们更好地理解操作系统底层的工作原理,为更高级的自动化技术,如Windows PowerShell或Linux shell脚本打下基础。 批处理编程虽然简单,但其威力不容小觑。它能帮助我们实现自动...

    BAT 脚本的基本命令语法.docx

    在Linux系统中,虽然批处理概念相同,但使用的命令和语法有所不同,如bash shell脚本使用`#`作为注释,`echo`、`if`、`for`等命令也有其独特的用法。不过,理解DOS批处理的基本原理有助于理解和学习其他类似的脚本...

    windows下shell语言.pdf

    Windows 下Shell语言,通常指的是Windows环境下使用的命令行脚本语言,这类脚本语言中最为著名的便是批处理脚本(Batch file scripting)和Windows PowerShell。批处理脚本主要使用命令提示符(CMD)来执行,而...

    执行bat文件,并打印执行结果,类似cmd.rar

    在Windows操作系统中,批处理(BAT)文件是一种文本文件,其中包含了可以连续执行的一系列命令。这些命令通常用于自动化常见的任务,例如复制文件、创建目录或运行程序。本主题将详细探讨如何执行BAT文件并捕获其...

    利用WScript.Shell对象隐藏cmd命令行运行框的实现代码

    - **步骤2**:使用`WScript.Shell`对象来运行`testcopy.bat`文件,从而隐藏命令行窗口。 - **方法一**:直接通过`WScript.Shell`运行批处理文件。创建`testcopy1.vbs`脚本: ```vbscript Dim objShell Set ...

    BAT批处理脚本-系统设置查询修改硬件相关-去除msconfig的开机提示.zip

    BAT批处理脚本是Windows操作系统中一种非常实用的自动化工具,它通过编写一系列命令行指令,可以实现对系统的批量操作,比如系统设置的查询和修改。在这个特定的压缩包文件中,我们关注的是如何利用批处理脚本来去除...

    启动暂停系统服务(VB,BAT,VBS含源码 )

    总结,启动和暂停系统服务是系统管理员常用的操作,VB、BAT和VBS提供了方便的工具来实现这些功能。理解并掌握这些编程和脚本语言的用法,对于日常的系统管理和故障排查具有重要的实践意义。在使用时,务必确保你有...

    android 查看数据流量统计脚本

    本文将详细介绍如何通过shell和bat脚本来查看Android设备上的数据流量统计。 首先,我们要理解Android系统中的数据流量统计原理。Android系统会记录每个应用的数据使用量,分为移动数据(如4G、3G)和Wi-Fi两种类型...

    InteractiveShell.rar

    7. **错误处理和调试**:理解如何捕获和处理错误,以及使用`echo off`,`pause`等命令进行调试,是编写稳定脚本的关键。 8. **高级脚本工具**:除了CMD本身,还有一些增强型的命令行工具,如Powershell,它提供了更...

    BAT批处理脚本-删除右键“新建”菜单项目.zip

    1. 使用`reg`命令来查询和读取注册表中的相关键,如`HKEY_CLASSES_ROOT\Directory\shell`和`HKEY_CLASSES_ROOT\Drive\shell`等,这些位置通常存储了“新建”菜单的设置。 2. 判断哪些键值与要删除的“新建”菜单项目...

Global site tag (gtag.js) - Google Analytics