linux shell 自动输入y,bash 脚本实现提示确认:任意键继续、输入Y/N继续

0 场景描述

你写了一个脚本,其中作了一些假设,需要提示给用户,让用户确认。这时,就需要写一个“提示确认”功能。

有两种常见的交互方式:(1)按任意键继续;(2)输入特定字符后继续(一般是 Y/N)。

这里把两种方式的 demo 代码都贴出来。

1 任意键继续

#!/bin/bash

echo " 开始执行操作. ... "

get_char()

{

SAVEDSTTY=`stty -g`

stty -echo

stty cbreak

dd if=/dev/tty bs=1 count=1 2> /dev/null

stty -raw

stty echo

stty $SAVEDSTTY

}

echo "Press any key to continue..."

echo " CTRL+C break command bash ..." # 组合键 CTRL+C 终止命令!

char=`get_char`

echo " 操作完成 .... "

2 输入 Y/N 继续

这里又分两种情况:(1)只接收一次输入,不论是什么字符,立即退出(2)循环接收输入,直到用户输入 Y(Yes) 或 N(No)。

2.1 一次输入

#!/bin/bash

read -r -p "Are You Sure? [Y/n] " input

case $input in

[yY][eE][sS]|[yY])

echo "Yes"

;;

[nN][oO]|[nN])

echo "No"

;;

*)

echo "Invalid input..."

exit 1

;;

esac

2.2 循环输入

#!/bin/bash

while true

do

read -r -p "Are You Sure? [Y/n] " input

case $input in

[yY][eE][sS]|[yY])

echo "Yes"

break

;;

[nN][oO]|[nN])

echo "No"

break

;;

*)

echo "Invalid input..."

;;

esac

done

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用expect命令来实现自动输入yes。expect是一个自动化交互式工具,可以模拟人类的交互行为。 下面是一个简单的expect脚本示例,用于自动输入yes: ``` #!/usr/bin/expect spawn your_command expect "Are you sure you want to continue? (y/n)" send "yes\r" expect eof ``` 其中,your_command是需要执行的命令,expect "Are you sure you want to continue? (y/n)"表示等待命令输出的提示信息,send "yes\r"表示自动输入yes并回车,expect eof表示等待命令执行完毕。 需要注意的是,expect脚本需要安装expect工具才能运行。如果你的系统没有安装expect,可以使用以下命令进行安装: ``` sudo apt-get install expect ``` ### 回答2: Shell脚本是一种简单而有效的自动化工具,可以帮助用户自动化执行一些重复性的任务。在使用Shell脚本过程中,有时会遇到需要自动确认某些情况的情况,而这时需要自动输入"yes"。以下是一些方法来实现Shell脚本自动输入"yes"。 方法一:使用管道符号加上echo命令 在命令行中使用echo命令输入"yes",并将其与需要确认的命令使用竖杠(|)串联起来。例如: echo "yes" | command 其中,"yes"是需要输入确认字符串,"command"是需要确认的命令。这将会自动输入"yes"来确认命令的执行。 方法二:使用Expect命令 Expect是一个可以自动化命令行交互的工具,可以通过Shell脚本来使用。它可以模拟用户的输入和输出,从而实现自动化执行命令的功能。以下是使用Expect实现自动输入"yes"的示例代码: #!/usr/bin/expect spawn command expect "Are you sure you want to continue? [y/N]" send "yes\r" expect eof 其中,"command"是需要确认的命令,expect语句用于捕捉命令的需要确认提示信息,并且send语句用于自动输入"yes"来确认命令的执行。 方法三:使用/dev/null重定向 在需要输入"yes"的情况下,有时可以将/dev/null文件重定向到命令中。例如: command < /dev/null 这将会将/dev/null文件输入到命令中,从而避免需要人工确认的情况,实现自动化执行命令的功能。 综上,以上三种方法都可以用来实现Shell脚本自动输入"yes",在具体使用中需要根据实际情况选择一种最适合的方法。 ### 回答3: 在某些情况下,使用命令时可能需要进行确认,例如删除文件时需要确认是否要删除。为了避免手动输入yes,可以通过编写shell脚本自动输入yes。 首先,我们需要了解如何手动输入yes。在终端中,输入命令时,输入yes的方式是按下y和Enter键。因此,我们可以在shell脚本中通过echo命令来模拟按下y和Enter键的操作。 以下是一个简单的示例脚本: ```bash #!/bin/bash echo "Are you sure you want to delete this file? [y/N]" read confirm if [ "$confirm" == "y" ] || [ "$confirm" == "Y" ]; then echo "yes" | command-to-be-executed else echo "Operation canceled." fi ``` 在此示例中,我们首先使用echo命令打印确认信息,并使用read命令等待用户输入。如果用户输入了y或Y,则使用echo命令将yes输出,并使用管道符将其传递给要执行的命令。否则,打印“Operation canceled.”的提示信息。 需要注意的是,由于输入yes可能会有一定风险,因此在使用自动输入yes的脚本时需要格外小心。确保在正确的情况下才使用这种脚本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值