首页
学习
活动
专区
工具
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/

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

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

相关·内容

领券