有一些命令行实用程序在启动时会多次请求输入,例如在这里我需要将用户名和主机传递给某个命令。 我想做其他命令,以便通过这些args
user:~$ run_something
username:
host:
如何将这些参数按顺序传递给命令,例如:
user:~$ echo "my_user, my_host" | run_something
答案 0 :(得分:0)
使用xargs
例如。
echo "mydir" | xargs ls
将列出目录mydir
中的文件答案 1 :(得分:0)
一种方法是使用标准输入中的read
:
run_something() {
read -r username host && declare -p username host;
}
然后将其运行为:
echo "my_user my_host" | run_something
获得输出:
declare -- username="my_user"
declare -- host="my_host"
另一种方法是在调用函数之前直接设置变量:
run_something() {
declare -p username host
}
然后将其运行为:
username='my_user' host='my_host' run_something
获得相同的输出:
declare -x username="my_user"
declare -x host="my_host"
答案 2 :(得分:0)
您需要发送您在每行之后键入的换行符。 run_something
期待两行输入:
printf '%s\n' "username" "host" | run_something