在两个shell脚本之间传递多个值

在两个shell脚本之间传递多个值,shell,Shell,我有两个shell脚本,即(master,function);主机调用函数脚本并尝试向其传递值 请注意,函数脚本是一个交互式脚本;i、 e.它等待用户的答案根据答案执行 因此,要传递一个值,我可以写以下内容: echo "string" | ./function-script 问题是我必须传递几个值。有什么建议吗?简单的解决方案: 不要试图传递多个变量 只需使用export a=1语法导出主脚本中的所有变量 然后像普通脚本一样从主脚本调用子脚本 所有变量都将在子脚本中可用 功能脚本能否对位置

我有两个shell脚本,即(master,function);主机调用函数脚本并尝试向其传递值

请注意,函数脚本是一个交互式脚本;i、 e.它等待用户的答案根据答案执行

因此,要传递一个值,我可以写以下内容:

echo "string" | ./function-script
问题是我必须传递几个值。有什么建议吗?

简单的解决方案:

  • 不要试图传递多个变量
  • 只需使用
    export a=1
    语法导出主脚本中的所有变量
  • 然后像普通脚本一样从主脚本调用子脚本
  • 所有变量都将在子脚本中可用
功能脚本能否对位置参数进行操作?如果是这样,你可以这样称呼它:

./function-script arg1 "argument 2" arg3
然后“函数脚本”将根据需要使用
“$1”
“$2”
“$3”

如果“函数脚本”仅接受标准输入,请执行以下操作:

printf "%s\n" arg1 "argument 2" arg3 | ./function-script
“函数脚本”可以:

IFS= read -r arg1
IFS= read -r arg2
IFS= read -r arg3

使用命令行参数

./function-script "string" "another string"
如果通过将数据管道化到函数脚本中来抢占标准输入,则会使函数脚本的交互操作变得困难


您可以将变量导出为环境变量,但正如常规编程中的全局变量不是一个好主意,因为它们的用法是隐藏的,环境变量也是如此。

实际上,我需要第二种情况。我在flag-r-r命令中遇到了一个问题:找不到。实际上,就我所阅读的手册而言,没有包含flag-r。所以,请你再解释一下,看看产生这个错误的确切代码。您使用的是什么shell?我在debian 2.30.2和ubuntu 14.04.1上使用bash shell,但以下是我的测试脚本:master.sh:
printf“%s\n”1“2”|/func.sh
func.sh:
echo”输入2个数字:“first=read-r arg1 second=read-r arg2 echo”============echo$first echo$second
很抱歉,因为注释中的代码部分格式有问题..1。捕获命令输出的方法是使用
$()
,因此
输出=$(命令)
。2.只需在read命令
read-r中首先使用所需的varname;读取-r秒