【发布时间】:2016-07-18 18:46:52
【问题描述】:
这很可能是我在某个地方犯的一个愚蠢的错误,但我似乎无法弄清楚发生了什么。希望我能在这里找到一些帮助。
我有一个脚本callee.sh,它需要一些可选变量$1,$2,$3 等......它在脚本中做了一堆回显(所以,多行输出)我只想最后一行作为结果。其他行只是调试状态报告。
当尝试将结果分配给这样的变量时
result=`./callee.sh | tail -n 1`完美运行
但是,如果它需要参数
result=`./callee.sh param1 param2 param2 | tail -n 1`代码将永远阻塞,永远不会进入callee.sh
只是为了比较我尝试运行
result=`./callee.sh`,这可行,但所有行都附加到一行(没关系)
但正在运行
result=`./callee.sh param1 param2 param2` 也永远挂起。从不输入callee.sh
我做错了什么?我应该怎么做?
【问题讨论】:
-
命令
./callee.sh param1 param2 param2(不带反引号)运行需要多长时间? -
感谢您指出错字。固定
-
如果
./callee.sh运行完成但./callee.sh param1 param2 param2永远挂起,那么您的问题就在callee.sh内部。 -
请edit你的问题包含一个minimal reproducible example(基本上是添加
callee.sh的内容)。没有它,只能对问题进行猜测。 -
result仍将包含输出中的换行符;如果您看到一行,那是因为您没有正确引用参数扩展。 (比较echo $result和echo "$result"。)
标签: linux bash shell backticks