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

问题描述:

我有两个shell脚本,即(master,function);主调用函数脚本并尝试将值传递给它。在两个shell脚本之间传递几个值

请注意,函数脚本是一个交互式脚本;即它根据答案等待用户的答案来执行。

所以要通过一个价值,我可以写:

echo "string" | ./function-script 

的问题是,我要通过几个值。有什么建议?

可以在“功能脚本”位置参数来操作?如果是这样,你把它想:

./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 
+0

其实我需要第二种情况。我遇到了-r -r:命令未找到的问题 事实上,阅读手册根本不包含标志-r。所以你可以请解释一下 – user2804070 2014-08-27 20:09:49

+0

显示产生该错误的确切代码。你在用什么外壳? – 2014-08-27 20:11:25

+0

我在debian 2.30.2和ubuntu上使用bash shell 14.04.1 但是,这里是我的测试脚本: master.sh: 'printf“%s \ n”“1”“2”| 。/ func.sh' func.sh: '回声 “输入2号:” 第一=读-r ARG1 第二=读-r ARG2 回声“============ =====” 呼应,因为在注释中的代码部分的格式$第一 回声$秒' 和抱歉.. – user2804070 2014-08-28 07:36:53

简单的解决方案:

  • 不要试图传递多个变量。
  • 只需使用export a=1语法在主脚本中导出所有变量即可。
  • 然后由主呼儿脚本像楷书
  • 所有变量将在孩子的脚本可用。

使用命令行参数。

./function-script "string" "another string" 

如果您抢先标准输入管道通过数据导入功能脚本,使功能脚本的交互操作很难。

你可以不是与环境变量导出变量作为环境变量,但只是作为常规节目全局变量是不是一个好主意,因为他们使用的是隐藏的,所以也。