xargs
是一个在 Unix 和类 Unix 系统上常用的命令行工具,它可以将标准输入数据转换成命令行参数,然后传递给其他命令或脚本。默认情况下,xargs
执行的 shell 脚本不会接受用户输入,因为它们通常在后台运行,没有与终端直接关联。
要让 xargs
执行的 shell 脚本接受用户输入,可以采用以下几种方法:
-I
选项和 cat
你可以使用 -I
选项指定一个替换字符串,然后结合 cat
命令来读取用户输入:
echo "请输入一些文本:" | xargs -I {} sh -c 'echo 输入的是: {}; read -p "继续输入吗?(y/n) " answer; echo $answer'
在这个例子中,{}
是 xargs
传递给脚本的参数,read
命令用于接收用户输入。
-p
和 -t
选项-p
选项会让 xargs
在执行每个命令之前提示用户,-t
选项会打印出要执行的命令:
echo "请输入一些文本:" | xargs -p -t sh -c 'read -p "请输入: " input; echo 你输入的是: $input'
你可以将用户输入重定向到一个临时文件,然后在 xargs
执行的脚本中读取这个文件:
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
命令来获取用户输入:
#!/bin/bash
echo "请输入一些文本:" | xargs -I {} sh -c '
echo 输入的是: {};
read -p "继续输入吗?(y/n) " answer;
[ "$answer" == "y" ] && echo "好的,继续。" || echo "结束输入。"
'
将上述脚本保存为 xargs_input.sh
,并给予执行权限:
chmod +x xargs_input.sh
然后运行脚本:
./xargs_input.sh
这个脚本会提示用户输入文本,并询问是否继续输入。
xargs
命令手册页:https://man7.org/linux/man-pages/man1/xargs.1.html请注意,这些链接可能会随着时间的推移而发生变化。如果链接失效,请在相关网站上搜索相应的手册页或教程。
领取专属 10元无门槛券
手把手带您无忧上云