首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

运行命令并显示控制台输出的Bash脚本,直到出现某些短语或超时

Bash脚本是一种在Linux和Unix系统中运行的脚本语言,用于执行一系列命令和操作。它可以帮助自动化任务和批处理操作,提高工作效率。

对于运行命令并显示控制台输出的Bash脚本,直到出现某些短语或超时,可以使用以下方法实现:

  1. 使用循环和条件语句:可以使用while循环和if语句来实现。示例代码如下:
代码语言:txt
复制
#!/bin/bash

timeout=60  # 设置超时时间为60秒
end_phrase="完成"  # 设置结束短语为"完成"

start_time=$(date +%s)  # 记录脚本开始时间

while true; do
    current_time=$(date +%s)
    elapsed_time=$((current_time - start_time))

    if [ $elapsed_time -ge $timeout ]; then
        echo "超时,未找到目标短语。"
        break
    fi

    output=$(your_command)  # 替换为你要运行的命令

    if echo "$output" | grep -q "$end_phrase"; then
        echo "找到目标短语:$end_phrase"
        echo "$output"
        break
    fi

    sleep 1  # 每秒检查一次输出
done

在上述示例中,你需要将your_command替换为你要运行的命令。脚本会循环执行该命令,并检查输出是否包含目标短语。如果超过设定的超时时间仍未找到目标短语,则输出超时提示。

  1. 使用timeout命令:timeout命令可以设置命令的超时时间,并在超时时终止命令的执行。示例代码如下:
代码语言:txt
复制
#!/bin/bash

timeout=60  # 设置超时时间为60秒
end_phrase="完成"  # 设置结束短语为"完成"

output=$(timeout $timeout your_command)  # 替换为你要运行的命令

if echo "$output" | grep -q "$end_phrase"; then
    echo "找到目标短语:$end_phrase"
    echo "$output"
else
    echo "超时,未找到目标短语。"
fi

在上述示例中,你需要将your_command替换为你要运行的命令。timeout命令会在超时时间到达后终止该命令的执行,并将输出保存在变量output中。然后,脚本会检查输出是否包含目标短语,并相应地输出结果。

这些方法可以帮助你在Bash脚本中运行命令并显示控制台输出,直到出现某些短语或超时。根据具体需求选择适合的方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

linux 定时传送文件 scp脚本实现自动输密码传送

[root@fqdn soft]/usr/expect/bin/expect 显示如下图即为安装正常(出现 expect1.1) 二、expect使用 示例:例如定时将数据库备份文件发送到另一台服务器...spawn 该命令用于启动一个子进程,执行后续命令 expect 该命令从进程接受字符串,如果接受字符串和期待字符串不匹配,则一直阻塞,直到匹配上或者等待超时才继续往下执行 send 向进程发送字符串...interact 该命令将控制权交给控制台,之后就可以进行人工操作了。通常用于使用脚本进行自动化登录之后再手动执行某些命令。如果脚本中没有这一条语句,脚本执行完将自动退出。...set timeout 30 设置超时时间timeout为30s,expect命令阻塞超时时会自动往下继续执行。...将timeout配置为-1时表示expect一直阻塞直到与期待字符串匹配上才继续往下执行。超时时间timeout默认为10s。

61510

systemd调试

显示服务器启动问题可能表现为tty1上没有登录,但其他VT可以工作。 如果启动时没有在任何一个虚拟控制台显示登录信息就停止了,在宣布它肯定卡住之前,让它重试最多5分钟。...有一种可能是启动困难服务在这个超时后会被杀死,启动会继续正常进行。另一种可能性是,一个重要挂载点设备将无法出现,你将会看到紧急模式。...,/将其附在bugreport中。...使用串行控制台 使用debug shell--它不仅从早期启动时就可以使用,而且一直到晚期关机时都处于活动状态。...该服务可能已经打印了自己错误信息,但你没有看到,因为由 systemd 运行服务与你登录会话无关,它们输出没有连接到你终端。但这并不意味着输出丢失。

1.3K20
  • sed & awk 第二版学习(三)—— 编写 sed 脚本

    后者必须将整个文件(大部分)读入内存,这可能产生内存溢出处理大文件时速度非常慢。sed 首先将整个编辑脚本应用于第一个输入行,然后再读取第二个输入行对其应用整个脚本。...sed 维护一种模式空间,即一个工作区临时缓冲区,当应用编辑命令时将在那里存储单个输入行。当应用了所有的指令后,当前行被输出并且输入下一行被读入模式空间。...如果同时尝试几个命令,则在问题出现时需要按和创建命令相反过程来结束,即一个一个地删除命令直到找到问题为止。来看下面的例子。 需求: 用 .LP 取代所有空行。...通常这些脚本只是将单词短语变成另一种形式替换命令列表,例如: s/ON switch/START switch/g s/ON button/START switch/g s/STANDBY switch...在某些方面,编写脚本就像为给定事实某种集合设计一个假设。通过增加测试数据来试着验证假设合法性。

    6510

    shell expect权威指南和实战

    脚本首先等待输出出现]:字符串,一旦在输出出现chsh输出特征字符串(一般特征 字符串往往是等待输入最后提示符特征信息)。对于其他不匹配信息则会完全忽略。...()可能会出现嵌套情况,这这种情况下编码从最内层到最外层来进行。 4、使用超时 下一个expect例子中将阐述具有超时功能提示符函数。...这个脚本提示用户输入,如果在给定时间内没有输入,则会超时返回一个默认响应。这个脚本接收三个参数:提示符字串,默认响应和超时时间(秒)。 #!...(2)set timeout命令设置后面所有的expect命令等待响应超时时间为$tout(-l参数用来关闭任何超时设置)。 (3)然后expect命令就等待输出出现回车字符。...如果超时或者用户仅仅输入了回车符号,echo命令输出 Answer was "silence" 5、一个更复杂例子 下面我们将讨论一个更加复杂expect脚本例子,这个脚本使用了一些更复杂控制结构和很多复杂交互过程

    1.9K21

    shell编程菜鸟教程_java并发编程实战 pdf

    /bin/bash //执行代码 echo Hello World 赋予权限执行: //赋予可执行权限 chmod +x a.sh //执行(调用/bin/bash执行a.sh脚本) ...."Enter your password: " pass declare 用来限定变量属性 -r 只读 -i 整数:某些算术计算允许在被声明为整数变量中完成,而不需要特别使用exprlet来完成...3,java进程信息文件存储地址被设置,不在/tmp目录下 登录Shell和交互shell 交互式:顾名思义,这种shell中命令时由用户从键盘交互式地输入运行结果也能够输出到终端显示给用户看...非交互式:这种shell可能由某些自动化过程启动,不能直接从请求用户输入,也不能直接输出结果给终端用户看。输出最好写到文件。比如使用Shell脚本。...一旦打开一个交互式login shell,或者以–login选项登录非交互式shell,都会首先加载执行/etc/profile中命令,然后再依次加载~/.bash_profile, ~/.bash_login

    4.6K20

    Kali Linux 网络扫描秘籍 第二章 探索扫描(一)

    Received 3285 packets, got 0 answers, remaining 1 packets >>> 通过使用超时功能,发送到非响应主机请求将在指定时间之后返回,显示捕获到...此外,Wireshark 可以同时运行,因为脚本正在运行来观察如何按顺序广播每个地址请求,以及活动主机如何响应这些请求,如以下屏幕截图所示: 此外,我们可以轻易将脚本输出重定向到文本文件,然后可以用于随后分析...此脚本还可以轻松地修改为,仅对文本文件中包含某些 IP 地址执行 ARP 请求。 为此,我们首先需要创建一个我们希望扫描 IP 地址列表。 为此,模可以使用 Nano VIM 文本编辑器。...脚本中轻易将该任务传递给循环,输出实时 IP 地址列表。...正是由于这个原因,ICMP 可能有点不可靠,但与 ARP 不同,它是一个可路由协议,可用于发现局域网外主机。 请注意,在前面的示例中,在ping命令显示输出出现^ C。

    3K30

    Linux 命令(239)—— expect 命令

    ] 3.选项说明 -d 启用一些诊断输出,主要报告 expect 和 interaction 等命令内部活动。...如果值非零按下^C(击中断点,脚本出现其他适当调试器命令),调试器将在下一个 Tcl(Tool Command Language) 过程之前接管控制。...-i 交互式输入 expect 命令,而不是从文件中读取。通过 exit 命令 EOF 终止。 -n 不使用 ~/.expect.rc 脚本。.../-"从文件名为-文件读取)。 -b 默认情况下,命令文件被读入内存完整地执行。有时需要一次读取一行。例如,stdin 是这样读取。为了强制任意文件以这种方式处理,请使用 -b 选项。...send_user [-flags] string 用来打印指定字符串到标准输出,相当于 Shell 中 echo。 exit [-opts] [status] 退出 expect 脚本

    2.8K61

    【linux命令讲解大全】053. Shell脚本read命令及其用法

    read命令 read命令从键盘读取变量值,通常在Shell脚本中用于与用户进行交互。该命令可以一次读取多个变量值,变量和输入值之间需要用空格隔开。...示例 下面列出了read命令常见用法示例: 读取变量值赋给变量1987name: read 1987name 读取输入到第一个空格回车,将第一个单词赋值给变量first,剩余输入赋值给变量last...#控制台输入Hello #echo $1987name #打印变量 HelloWorld 依次读取一组输入,以空格隔开,直到按回车结束,并将分别赋值给三个变量: #read one two...输入密码时不显示密码示例(方法1): #!/bin/bash read -p "输入密码:" -s pwd echo echo password read, is "$pwd" (方法2): #!...#输入数据 完成后,可以使用echo命令输出查看指定变量值,输入以下命令: echo $v1 $v3 #输出变量值 执行输出变量值命令后,将显示用户输入数据值,如下所示: Linux

    41810

    01 . Shell详细入门介绍及简单应用

    Shell简介 Shell 是一个 C 语言编写脚本语言,它是用户与 Linux 桥梁,用户输入命令交给 Shell 解释处理Shell 将相应操作传递给内核(Kernel),内核把处理结果输出显示到屏幕给用户...,使用标准输入和输出设备,即从键盘接受输入,将结果显示显示器上。...重定向可以将shell输入输出重定向到文件设备。 输入重定向符号为””和”>>”。...脚本内容 在shell脚本中可以出现任何系统命令,输入你想要执行命令即可,我们创建一个hello.sh cat hello.sh #!...4: . + 脚本 . test.sh hello 区别 # 第一种和第二种会新打开一个bash,不同bash变量无法共享, # 第三种和第四种是直接使用当前运行环境作为解释器运行环境 sudo

    81360

    《Linux命令行与shell脚本编程大全》第十六章 控制脚本

    也可以通过对脚本进行编程,使其在收到特定信号时执行某些命令。从而控制脚本操作。...可以在脚本中加入识别信号代码,执行命令来处理信号。 16.1.2 生成信号 bash shell允许用键盘上组合键生成两种进本linux信号。...16.1.3 捕获信号 也可以不忽略信号,在信号出现时捕获它们执行相应命令。 trap命令允许你来指定脚本要监看并从shell中拦截linux信号。...16.3 在非控制台运行脚本 需求:在终端启动脚本,让脚本一直运行到结束,即使退出了终端会话。 nohup命令可以做到。它运行了另外一个命令来阻断所有发送给该进程SIGHUP信号。...需要指定要运行命令脚本全路径名,后面还可以接参数和重定向符号 2.

    3K61

    微软出品自动化神器Playwright,不用写一行代码(Playwright+Java)系列(二) 之脚本录制及调试详解

    image.png 三种方式启动Playwright Inspector 1、设置环境变量PWDEBUG方式启动 在debug模式下运行脚本文件,会进入Playwright调试模式打开Playwright...在 Playwright CLI中使用open命令:codegen mvn exec:java -e -Dexec.mainClass=com.microsoft.playwright.CLI -Dexec.args...=1: 浏览器以 headed 模式启动 默认超时设置为 0(= 无超时) 使用PWDEBUG=console将配置浏览器以在开发者工具控制台中进行调试: 带头运行:浏览器始终以带头模式启动 禁用超时:...将默认超时设置为 0(= 无超时控制台助手:在浏览器中配置一个playwright对象以生成和突出显示Playwright 选择器。...这可用于验证文本复合选择器。

    2.3K11

    云课五分钟-06一段代码调试debug-AI与人工

    你可以将上述脚本保存为一个文本文件(例如 script.sh),然后在终端中运行脚本bash script.sh。...如果程序不会自动退出,如果在脚本中计时,退出特定程序呢 如果程序不会自动退出,你可以使用脚本计时器来监控程序运行时间,并在超时时退出特定程序。下面是一个示例脚本,可以实现这个功能: #!...fi 在这个示例脚本中,你需要将 程序路径 替换为你要运行程序实际路径。脚本首先启动程序,并将其进程ID保存到 program_pid 变量中。然后,使用 sleep 命令等待指定超时时间。...在超时时间到达后,脚本检查程序是否仍在运行,如果是,则使用 kill -9 命令强制退出程序。 你可以根据需要修改超时时间 timeout 值。...请注意,强制退出程序可能会导致数据丢失不完整,因此请确保在适当情况下使用此脚本。 这段代码是一个C语言程序,用于生成一个动态变化彩色文本输出在终端上。它使用了ANSI转义码来控制文本颜色。

    18140

    Linux Shell基础篇三 - 内置命令

    内置命令 Shell 内置命令,就是由 Bash Shell 自身提供命令,而不是文件系统中可执行脚本文件。...可使用type来确定一个命令是否是内置命令或可执行文件: 1 type [-tpa] 命令名 参数 说明 无参数 显示命令名是外部指令还是 bash 内建指令 -t 会将命令名以底下这些字眼显示出他意义...读取执行指定文件中命令(在当前 shell 环境中) alias 为指定命令定义一个别名 bg 将作业以后台模式运行 bind 将键盘序列绑定到一个 readline 函数宏 break 退出 for...dirs 显示当前存储目录列表 disown 从进程作业表中刪除指定作业 echo 将指定字符串输出到 STDOUT enable 启用禁用指定内建shell命令 eval 将指定参数拼接成一个命令...将作业以前台模式运行 getopts 分析指定位置参数 hash 查找记住指定命令全路径名 help 显示帮助文件 history 显示命令历史记录 jobs 列出活动作业 kill 向指定进程

    1.4K30

    危险: 持续集成系统保护不好有多糟糕?|入侵系统完整过程 | 检查版本更新 | 禁止匿名用户

    某些情况下,还启用了匿名脚本控制台访问,这将启用对Java运行完全访问,从而允许执行命令。...5 创建项目 在无法访问脚本控制台情况下,根据配置,可以查看Web控制台潜在地计划作业查看生成历史记录用户仍然可以获得有价值信息。...有了作业创建访问权限,攻击者可以在Jenkins服务器上创建本地作业,使用它执行命令,然后在控制台输出中查看结果。...对于此测试实例,我们将其配置为“执行Windows批处理命令运行一些基本命令,包括添加本地管理员帐户,但是,这可以是在Windows批处理文件(.bat)中运行任何内容。 ?...在构建历史记录控制台输出中是否存储了任何敏感信息? 詹金斯可以上网吗?您组织需要它吗? Jenkins服务帐户是否以执行其功能所需最少特权运行? 凭证如何存储?

    2.1K20

    shell语法学习

    首先,在某些行之前使用 #检查注释使用方式。不过,第一行是一个例外。它被称为 shebang,让系统知道在运行这个脚本时要使用哪个解释器。...5.While 循环 while 循环构造用于多次运行某些指令。查看以下名为 while.sh 脚本,以更好地理解此概念。 #!...Bash 该程序暂停最后一条指令执行,直到 $time 秒,在本例中,用户提供了这一点。 32.wait 命令 wait 命令用于暂停 Linux bash 脚本系统进程。...Bash 33.显示上次更新文件 有时,您可能需要为某些操作查找最后更新文件。下面的简单程序向我们展示了如何在 bash 中使用 awk 命令执行此操作。...root" fi exit 0 Bash脚本输出取决于运行用户。

    1.2K40

    Shell expect用法描述

    send:向进程发送字符串,用于模拟用户输入, 该命令不能自动回车换行,一般要加\r(回车) expect: expect一个内部命令,判断上次输出结果里是否包含指定字符串,如果有则立即返回,...否则就等待超时时间后返回,只能捕捉由spawn启动进程输出expect spawn:启动进程,跟踪后续交互信息 interact:执行完成后保存交互状态,把控制权交给控制台 set timeout...30:设置超时时间为30秒(默认超时时间是 10 秒,通过 set 命令可以设置会话超时时间, 若不限制超时时间则应设置为-1) exp_continue: 允许expect继续向下执行指令meout...:指定超时时间,过期则继续执行后续指令 send_user: 回显命令,相当于echo argv参数数组:Expect脚本可以接受从bash传递参数,可以使用 [lindex argv n]...由spawn启动命令在结束时会产生一个eof标记,expect eof 即在等待这个标记 1.4. bash shell内加入expect脚本 使用<<-EOF ,引入expect脚本。 #!

    49530

    expect shell 脚本记录

    send:向进程发送字符串,用于模拟用户输入, 该命令不能自动回车换行,一般要加\r(回车) expect: expect一个内部命令,判断上次输出结果里是否包含指定字符串,如果有则立即返回,否则就等待超时时间后返回...,只能捕捉由spawn启动进程输出expect spawn:启动进程,跟踪后续交互信息 interact:执行完成后保存交互状态,把控制权交给控制台 set timeout 30:设置超时时间为30...秒(默认超时时间是 10 秒,通过 set 命令可以设置会话超时时间, 若不限制超时时间则应设置为-1) exp_continue: 允许expect继续向下执行指令meout:指定超时时间,过期则继续执行后续指令...send_user: 回显命令,相当于echo argv参数数组:Expect脚本可以接受从bash传递参数,可以使用 [lindex argv n] 获得,n从0开始,分别表示第一个1,第二个2,...由spawn启动命令在结束时会产生一个eof标记,expect eof 即在等待这个标记 # 1.4. bash shell内加入expect脚本 使用<<-EOF ,引入expect脚本。 #!

    84520

    案例驱动 :从入门到掌握Shell编程详细指南

    /bin/bash echo "hellom shell" 第二步:运行shell脚本 第一种:采用bashsh+脚本相对路径绝对路径(不用赋予脚本权限) sh helloShell.sh...bash helloShell.sh sh /root/Test/helloShell.sh bash /root/Test/helloShell.sh 第二种:采用输入脚本绝对路径相对路径执行脚本...(必须具有可执行权限)(没有给权限就会出现如下错误) 首先要赋予helloworld.sh 脚本+x权限 chmod 777 helloShell.sh 然后重新运行 ....语法:export 变量名 案例:使用shell脚本输出变量B 特殊变量 $n n(功能描述:n为数字,0代表该脚本名称, 案例:输出脚本文件名称、输入参数1和输入参数2 值...系统变量获得,可以显示加:return返回,如果不加,将以最后一条命令运行结果,作为返回值。return后跟数值n(0-255) 案例:计算两个输入参数和 #!

    1.1K20
    领券