在两个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
答
简单的解决方案:
- 不要试图传递多个变量。
- 只需使用
export a=1
语法在主脚本中导出所有变量即可。 - 然后由主呼儿脚本像楷书
- 所有变量将在孩子的脚本可用。
答
使用命令行参数。
./function-script "string" "another string"
如果您抢先标准输入管道通过数据导入功能脚本,使功能脚本的交互操作很难。
你可以不是与环境变量导出变量作为环境变量,但只是作为常规节目全局变量是不是一个好主意,因为他们使用的是隐藏的,所以也。
其实我需要第二种情况。我遇到了-r -r:命令未找到的问题 事实上,阅读手册根本不包含标志-r。所以你可以请解释一下 – user2804070 2014-08-27 20:09:49
显示产生该错误的确切代码。你在用什么外壳? – 2014-08-27 20:11:25
我在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