管道用户名和其他参数到命令行实用程序

时间:2018-02-12 10:33:21

标签: linux bash shell command-line sh

有一些命令行实用程序在启动时会多次请求输入,例如在这里我需要将用户名和主机传递给某个命令。 我想做其他命令,以便通过这些args

user:~$ run_something
username:
host:

如何将这些参数按顺序传递给命令,例如:

user:~$ echo "my_user, my_host" | run_something

3 个答案:

答案 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