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

如何让xargs执行的shell脚本接受用户输入?

xargs 是一个在 Unix 和类 Unix 系统上常用的命令行工具,它可以将标准输入数据转换成命令行参数,然后传递给其他命令或脚本。默认情况下,xargs 执行的 shell 脚本不会接受用户输入,因为它们通常在后台运行,没有与终端直接关联。

要让 xargs 执行的 shell 脚本接受用户输入,可以采用以下几种方法:

方法一:使用 -I 选项和 cat

你可以使用 -I 选项指定一个替换字符串,然后结合 cat 命令来读取用户输入:

代码语言:txt
复制
echo "请输入一些文本:" | xargs -I {} sh -c 'echo 输入的是: {}; read -p "继续输入吗?(y/n) " answer; echo $answer'

在这个例子中,{}xargs 传递给脚本的参数,read 命令用于接收用户输入。

方法二:使用 -p-t 选项

-p 选项会让 xargs 在执行每个命令之前提示用户,-t 选项会打印出要执行的命令:

代码语言:txt
复制
echo "请输入一些文本:" | xargs -p -t sh -c 'read -p "请输入: " input; echo 你输入的是: $input'

方法三:使用临时文件

你可以将用户输入重定向到一个临时文件,然后在 xargs 执行的脚本中读取这个文件:

代码语言:txt
复制
echo "请输入一些文本:" > input.txt
xargs -a input.txt sh -c 'cat input.txt; read -p "继续输入吗?(y/n) " answer; echo $answer'
rm input.txt

在这个例子中,-a 选项用于从指定的文件中读取输入。

应用场景

这种方法适用于需要在批量处理数据的同时,对每个操作进行用户交互的场景。例如,在自动化脚本中,你可能需要对每个处理的文件进行确认,或者在执行某些操作前获取额外的用户信息。

注意事项

  • 当使用 xargs 与用户交互时,要注意脚本的执行环境,确保它能够正确地读取用户的输入。
  • 如果脚本需要在后台运行,或者与其他系统集成,可能需要考虑其他的用户输入解决方案,比如使用配置文件或环境变量。

示例代码

以下是一个简单的示例脚本,它使用 xargs 并结合 read 命令来获取用户输入:

代码语言:txt
复制
#!/bin/bash
echo "请输入一些文本:" | xargs -I {} sh -c '
echo 输入的是: {};
read -p "继续输入吗?(y/n) " answer;
[ "$answer" == "y" ] && echo "好的,继续。" || echo "结束输入。"
'

将上述脚本保存为 xargs_input.sh,并给予执行权限:

代码语言:txt
复制
chmod +x xargs_input.sh

然后运行脚本:

代码语言:txt
复制
./xargs_input.sh

这个脚本会提示用户输入文本,并询问是否继续输入。

参考链接

  • xargs 命令手册页:https://man7.org/linux/man-pages/man1/xargs.1.html
  • Bash 脚本教程:https://www.tldp.org/LDP/abs/html/

请注意,这些链接可能会随着时间的推移而发生变化。如果链接失效,请在相关网站上搜索相应的手册页或教程。

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

相关·内容

shell 脚本中关于用户输入参数处理

shell 脚本中关于用户输入参数处理 bash shell 脚本提供了3种从 用户处 获取数据方法: 命令行参数(添加在命令后数据) 命令行选项 直接从键盘读取输入 1 命令行参数 像 shell.../temp.sh numbe bash shell 还提供了几个特殊变量: $# 脚本运行时携带 命令行参数个数; $* 将命令行上提供 所有参数 当做 一个单词 保存; $@ 将命令行上提供...这里从略, 等有需要用到再回来补上. 3 获取用户输入 尽管 命令行选项 和 参数 是从 用户处 获取输入一种重要方式, 但有时脚本交互性还需更强一些....比如在脚本运行时问一个问题, 等待运行脚本的人来回答, bash shell 为此提供了 read 命令. 3.1 read 命令 read variable_name 从标准输入(键盘) 或 另一个文件描述符中...接受输入, 在收到输入后, read 会将数据存入变量中.

2.4K20

Shell-使用&和wait脚本并行执行

文章目录 概述 常见串行执行 使用&和wait改造 示例二 ? ---- 概述 我们知道shell命令都是串行执行,如果想要充分利用服务器资源,就需要些小技巧了。...假定业务上多个业务逻辑没有先后关系,每个脚本执行时间也很长 ,推荐并行执行。 一般情况下,我们会把每个业务逻辑写到一个单独脚本里,在服务器上逐一调用,每次都要手工去敲命令。...执行时候去调用这个调用脚本,事实上linux会根据脚本顺序 串行去调用这些脚本,还不如自己在服务器上一个个执行快呢,最起码手工逐个调用脚本还是并行。.../bin/bash #当前目录下执行如下脚本 相对路径 ./1.sh ./2.sh echo "继续执行剩下逻辑..."...call_serial.sh 可知为【串行】 ---- 使用&和wait改造 在每个进程中使用&符号进行脚本在后台运行,无需等待当前进程结束。

15.2K11
  • Linux系列教程(二十)——Linuxshell概述以及如何执行脚本

    ①、shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序界面系统级程序,用户可以用 shell 来启动、挂起、停止甚至是编写一些程序。     ...比如,我们现在操作界面就是shell,我们输入一些命令,通过shell 去翻译为机器语言,然后由硬件去执行这些命令。   ②、shell 是一个功能很强大编程语言,它易编写、易调试,而且灵活性强。...shell 是解释执行脚本语言,在 shell 中可以直接调用 Linux 系统命令。 ?   ...3、查看Linux系统支持 shell:/etc/shells ?   我们可以在shell解释器中直接输入shell名称进行切换 ?...,这是一个约定标记,它告诉系统这个脚本需要用什么解释器去执行,即使用哪一种 shell,所以学习 bash,第一行固定都是 #!/bin/bash。这是不能省略

    1.4K80

    讲讲如何shell执行python命令两种实用方法

    第一种、使用python内置commands模块执行shell commands对Pythonos.popen()进行了封装,使用SHELL命令字符串作为其参数,返回命令结果数据以及命令执行状态;...模块执行shell Python目前已经废弃了os.system,os.spawn*,os.popen*,popen2....*来执行其他语言命令,subprocesss是被推荐方法; subprocess允许你能创建很多子进程,创建时候能指定子进程和子进程输入、输出、错误输出管道,执行后能获取输出结果和执行状态。...=False): """执行一个SHELL命令 封装了subprocessPopen方法, 支持超时判断,支持读取stdout和stderr 参数: cwd: 运行命令时更改路径...本文说明 在python中执行SHELL有时候也是很必须,比如使用Python线程机制启动不同shell进程,目前subprocess是Python官方推荐方法,其支持功能也是最多,推荐大家使用

    88500

    如何 .NET Core 命令行程序接受密码输入而不显示密码明文

    如何 .NET Core 命令行程序接受密码输入而不显示密码明文 发布于 2018-05-26 08:51...更新于 2018-09-01 00:04 如果是在 GUI 中要求用户输入密码,各 UI 框架基本都提供了用于输入密码控件;在这些控件中,用户输入密码时候会显示掩码。...写一个用户输入密码并显示掩码方法 既然控制台本身并没有提供可以为密码进行掩码方法,那么我们只能自己来写了: public static SecureString ReadPassword(string...Console.Write(mask); } } password.MakeReadOnly(); return password; } 方法内部接受用户输入...转换密码 当然,只有对安全级别比较高库才会接受 SecureString 类型字符串作为密码;一些简单库只接受字符串类型密码。那么在这些简单库中我们如何才能得到普通字符串呢?

    1.7K30

    shell脚本中常用命令复习

    shell脚本可以降低大家工作强度,提升大家管理能力和薪资报酬,还可以大家有时间学习提升自己,更能让你有时间喝茶撩妹子。...学习之前首先要弄清什么是shell脚本shell脚本本质上就是要将完成一件事情所有命令按照执行先后顺序写入一个文件,并给予文件执行权限 so!...想学好shell脚本首先要考核一下自己linux命令学是否扎实,接下来为了能让大家学习shell更加顺畅,我把常用一些数据处理命令给大家回顾一下。...-p 当每次执行一个argument时候询问一次用户。 -n num 后面加次数,表示命令在执行时候一次用argument个数,默认是用所有的。 -t 表示先打印命令,然后再执行。...-r no-run-if-empty 当xargs输入为空时候则停止xargs,不用再去执行了。

    83110

    Linux基础之cd无法进入xargs管道输出目录问题解决方法

    前言 今天在利用jenkins将项目部署到远程服务器,里面有个步骤涉及到切换目录,执行部署脚本命令,原本思路是利用xargs和cd配合进行目录切换,执行shell命令如下 ls -a | sort...xargs管道输出目录原因,并提供了对应解决方案,然后我怀着兴奋心情,以为拿到了仙丹妙药,就屁颠屁颠试了下去,果然真的没啥卵用。...为啥cd命令在管道符中不起作用 百度来答案是xargs牵涉写管道,而cd是内部命令,所以不起作用。...答案是这样吗,这样吗,可能以前是,但真正原因是cd是通过终端命令行读取数据,不接受标准输入,而xargs管道命令右边必须能够接收标准输入。。。...因此cd在xargs中不起作用,这不是很正常吗 如何使cd能够切换到我们想要目录?

    2.7K20

    基于Bash Shell一个审计脚本

    主要内容就是通过read -p 获取用户输入内容,然后进行判断 这里需要用户自行输入要扫描网站路径,字典路径可有可无,留空,就会执行已经写好东西,自定义的话,就需要用户自己输入字典路径了。。...二、网站日志分析 这个基本没变,懒得改了,详情可参考3年前写那篇文章。 如何编写自己Web日志分析脚本? ? 运行结果如下: ? ?...用户输入序号1,则进入到case第一个逻辑上,输出echo “case 1”后,它跳转到定义好gn1函数上,并gn1函数输出“我是功能1”后,返回到menu函数,也就是主界面。 ? ?...例如: windows上可以通过批处理方式,来写个懒人批处理 原理,依然是获取于用户输入,然后将输入内容带进变量里去执行,简单不要不要~ @set /p ym="输入要扫描域名地址:" @set.../p jb="输入要扫描脚本类型:" @rem 等待用户输入 @set /p gn="请选择要使用功能:": @rem 选择环境编码1 @if %gn%==1 ( @echo 普通扫描!

    1.1K30

    Linux操作10个好习惯

    这是十条linux系统下命令行操作模式时应该遵守好习惯,他们不仅可以操作更快,也能减少你失误可能性。...对于仍然缺乏该功能少数系统,您可以使用 mkdirhier 脚本(请参见参考资料),此脚本执行相同功能 mkdir 包装:~ $ mkdirhier project/{lib/ext,bin,src...注意:在大多数 Shell 中,当您按向上箭头键时,整个多行输入将重绘到单个长输入行上。...传递空格分隔列表 在最简单调用形式中,xargs 就像一个筛选器,它接受一个列表(每个成员分别在单独行上)作为输入。...由于大多数工具都接受使用连字符 (-) 标准输入作为一个参数,因此即使使用 cat 来分散 stdin 中多个文件,参数也通常是无效

    1K30

    编写Shell脚本最佳实践

    因为很多单行shell命令不是那么浅显易懂,没有注释的话在维护起来会人尤其头大。 注释意义不仅在于解释用途,而在于告诉我们注意事项,就像是一个README。...这一点很重要,当我们脚本需要接受参数时候,我们一定要先判断参数是否合乎规范,并给出合适回显,方便使用者了解参数使用。...日志和回显 日志重要性不必多说,能够方便我们回头纠错,在大型项目里是非常重要。 如果这个脚本是供用户直接在命令行使用,那么我们最好还要能够在执行时实时回显执行过程,方便用户掌控。...通常我们是直接用pwd以期获得脚本路径。 不过其实这样是不严谨,pwd获得是当前shell执行路径,而不是当前脚本执行路径。...比如[[ x > 2]] && echo x 当export变量时,尽量加上子脚本namespace,保证变量不冲突 会使用trap捕获信号,并在接受到终止信号时执行一些收尾工作 使用mktemp生成临时文件或文件夹

    84510

    【DB笔试面试275】 与SHELL脚本相关一些笔试面试题(目前36道,后续持续更新)

    真题2、什么是默认登录SHELL如何改变指定用户登录SHELL? 答案:在Linux操作系统中,“/bin/bash”是默认登录SHELL,是在创建用户时分配。...示例如下所示: # chsh -s # chsh lhr -s /bin/sh 真题3、可以在SHELL脚本中使用哪些类型变量?...答案:在SHELL脚本,可以使用两种类型变量:系统变量和用户变量。 系统变量是由系统自己创建。这些变量通常由大写字母组成,可以通过“set”命令查看。...0 如果结束状态不是0,那么说明命令执行失败。 真题7、在SHELL脚本如何比较两个数字?.../bin/bash # This is a command echo “I am logged in as $USER” 真题20、如何 SHELL脚本得到来自终端输入?

    88530

    编写Linux Shell脚本最佳实践

    因为很多单行shell命令不是那么浅显易懂,没有注释的话在维护起来会人尤其头大。 注释意义不仅在于解释用途,而在于告诉我们注意事项,就像是一个README。...这一点很重要,当我们脚本需要接受参数时候,我们一定要先判断参数是否合乎规范,并给出合适回显,方便使用者了解参数使用。...日志和回显 日志重要性不必多说,能够方便我们回头纠错,在大型项目里是非常重要。 如果这个脚本是供用户直接在命令行使用,那么我们最好还要能够在执行时实时回显执行过程,方便用户掌控。...通常我们是直接用pwd以期获得脚本路径。 不过其实这样是不严谨,pwd获得是当前shell执行路径,而不是当前脚本执行路径。...比如[[ x > 2]] && echo x 当export变量时,尽量加上子脚本namespace,保证变量不冲突 会使用trap捕获信号,并在接受到终止信号时执行一些收尾工作 使用mktemp生成临时文件或文件夹

    1.1K30

    日拱一卒,麻省理工教你CS基础,那些酷炫无比命令行工具

    这一节课主要讲是一些shell中进阶工具使用,虽然在日常工作当中我也经常使用shell命令,有时候也会编写shell脚本,这节课听完仍然我眼界大开,原来还有这么多神奇工具和用法。...比如创建命令管道,将运行结果保存在文件里,或者是从标准输入读入数据,都是shell脚本基础操作,这也使得它比一些通用脚本语言更加易用。这节课我们将会聚焦在bash脚本,因为它更加普遍。...需要注意foo = bar不会生效,因为它会将foo当成是要执行程序,而=和bar当成是foo参数。因为shell脚本是按照空格分隔参数。...这就使得函数导入时候会稍微快一点,不过每次它被修改时候,你都需要重新导入 函数是在当前shell环境当中执行,而脚本则会在它们独自进程当中运行。...通常,shell脚本会导入它们函数定义 Shell Tools 寻找如何使用命令 现在,你可能想要知道,怎么样知道命令中那些flag用法,比如ls -l, mv -i, mkdir -p。

    1.6K40

    终端操作(SHELL)技巧

    一方面这些技巧可以效率有所提高, 但有时候也会有隐患, 所以终端操作一定要注意高风险行为, 每一步也都要小心执行。...一般执行一个命令, 命令可以补齐, 参数也可以补齐,一个命令操作一般连续按下多次 Tab 键才能完成输入, 最后确保没有问题时候回车执行。...(比如grep匹配)返回码用0表示, 失败或者没有完成某个命令逻辑则用非0表示. && 表示上一句返回码0才会执行 || 表示上一句返回码非0才会执行 ; 无论如何执行 关于返回码, 你可以需要进一步了解...移动到行首或行尾 如下图, 如果我输入一个长命令, 输入到最后在执行前我发现了问题, 需要在行首增加 sudo 。 这时我可以使用 Ctrl + A移动光标到行首. ? 8....前面已经说到, SHELL 没有严谨异常处理. 如果有自动脚本, 这服务器运维增加风险属性。 小脚本还好, 一旦脚本迭代了几个需求,臃肿复杂而且维护性极差, 甚至会非常不安全。

    1.1K00

    09_Linux基础-SHELL-标准输入与标准输出-重定向-管道

    -----------------类型操作符用途重定向标准输出>将命令执行结果输出到指定文件中,而不是直接显示在屏幕上\>>将命令执行结果`追加输出到指定文件`重定向标准输入将命令执行结果输出到指定文件中,而不是直接显示在屏幕上\>>将命令执行结果`追加输出到指定文件`重定向标准输入<将命令中接收输入途径由默认键盘更改 为指定文件...SHELL-脚本练习及管道知识点4.0 接受从键盘输入 管道符号脚本 接受从键盘输入要求:输入用户名和密码 创建相应用户需求分析:接受用户输入创建用户设置密码-----相关知识点-------..."yyyzzz123" |passwd wy --stdinstdin 标准输入---*4.1 初始脚本1(注:# passwd在bash中执行时会在中间停止,用户进行输入密码\# `为了防止shell...程序运行出错python中如果程序运行中出现错误,后续操作会终止shell 中如果出现错误,操作会继续向下执行*4.3 优化脚本2用户创建脚本优化:1.命令标准输出和标准错误输出都输出到黑洞文件echo

    2.1K10

    UNIX 高手 10 个习惯

    对于仍然缺乏该功能少数系统,您可以使用 mkdirhier 脚本,此脚本执行相同功能 mkdir 包装: ~ $ mkdirhier project/,demo/stat/a} 更改路径;不要移动存档...注意:在大多数 Shell 中,当您按向上箭头键时,整个多行输入将重绘到单个长输入行上。...传递空格分隔列表 在最简单调用形式中,xargs 就像一个筛选器,它接受一个列表(每个成员分别在单独行上)作为输入。...,以便为其他某些接受文件名作为参数工具获得参数列表,如以下示例所示: 清单 15. xargs 工具使用示例 ~/tmp $ ls -1 | xargs December_Report.pdf README...由于大多数工具都接受使用连字符 (-) 标准输入作为一个参数,因此即使使用 cat 来分散 stdin 中多个文件,参数也通常是无效

    1.2K90

    【DB笔试面试275】 与SHELL脚本相关一些笔试面试题(目前37道,后续持续更新)

    真题2、什么是默认登录SHELL如何改变指定用户登录SHELL? 答案:在Linux操作系统中,“/bin/bash”是默认登录SHELL,是在创建用户时分配。...示例如下所示: # chsh -s # chsh lhr -s /bin/sh 真题3、可以在SHELL脚本中使用哪些类型变量?...答案:在SHELL脚本,可以使用两种类型变量:系统变量和用户变量。 系统变量是由系统自己创建。这些变量通常由大写字母组成,可以通过“set”命令查看。...0 如果结束状态不是0,那么说明命令执行失败。 真题7、在SHELL脚本如何比较两个数字?.../bin/bash # This is a command echo “I am logged in as $USER” 真题20、如何 SHELL脚本得到来自终端输入?

    1.8K30

    高效Shell编程建议及入坑

    因为很多单行shell命令不是那么浅显易懂,没有注释的话在维护起来会人尤其头大。...,所以再执行脚本前需要对其进行chomd +x test.sh 日志重要性不必多说能够方便我们回头纠错,在大型项目里是非常重要,同时能够在执行时实时回显执行过程,方便用户掌控。...8)脚本文件路径 通常我们是直接用pwd以期获得脚本路径,不过其实这样是不严谨,pwd获得是当前shell执行路径,而不是当前脚本执行路径。...# 如果命令运行失败脚本退出执行 set -o errexit # 或 set -e 如果脚本中使用到未声明变量同样可能导致逻辑错误,可以用下面的命令设置脚本在使用到未声明变量时退出执行: #...比如[[ x > 2]] && echo x 短路求和 当export变量时尽量加上子脚本 namespace 保证变量不冲突 会使用trap捕获信号,并在接受到终止信号时执行一些收尾工作 使用mktemp

    84310

    Linux系统入门系列之二

    例如,我们列出etc下所有文件,并将结果进行分页展示,示例如下: 查询服务器用户登录信息,并将“tengwk”用户信息选取出来,并剪取用户名和登录时间: 命令:xargs 该命令可以使不支持管道命令指令引用标准输入内容...然而xargs可以将标准输入内容转换为指令作用对象。...该命令还可以产生命令参数,例如-p可以提醒后面命令意义,用户可以输入y(yes)或n(no)来选择是否执行xargs具体参数如下: -n后面加次数,表示命令在执行时候一次用argument...3.3软件脚本 在Linux中,可以使用命令充分调用各种软件(脚本)来完成分析任务,也可以将Linux命令整合为shell脚本,这样便于管理与修改。....R 命令:sh 执行多命令整合成shell脚本,示例如下: 对于安装软件,调用时则需要完整绝对路径,例如Mothur,需要输入/sdd/userLogin/zhengjw/softwares/mothur

    39930
    领券