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