linux - Bash - 反引号调用永远阻塞

标签 linux bash shell backticks

这很可能是我在某个地方犯的一个愚蠢的错误,但我似乎无法弄清楚发生了什么。希望我能在这里找到一些帮助。

我有一个脚本callee.sh,它需要一些可选变量$1,$2,$3等...并且它在脚本中做了一堆回显(因此,多行输出)我只想最后一行作为结果。其他行只是调试状态报告。

当尝试将结果分配给这样的变量时

结果=`./callee.sh | tail -n 1` 完美运行

但是,如果它需要参数

结果=`./callee.sh param1 param2 param2 | tail -n 1` 代码将永远阻塞,永远不会进入 callee.sh

只是为了比较,我尝试运行

result=`./callee.sh`,这有效,但所有行都附加到一行(很好)

但是正在运行

result=`./callee.sh param1 param2 param2` 也永远挂起。切勿输入 callee.sh

我做错了什么?我该怎么办?

最佳答案

不知道没有代码,但简短的答案是使用

result=$(./callee.sh ...)

而不是反引号。 $(...) 正确处理嵌套括号。

此外,请使用 / 而不是 \

并且,正如 @Leon 指出的那样,请使用 tail -1tail -n 1,而不是 tail -n -1

关于linux - Bash - 反引号调用永远阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38443957/

相关文章:

python - 树莓派 : terminate raspistill command from python

java - Tomcat 不接受 Ubuntu 中的 JAVA_HOME

bash - 此处文档 - 意外的文件结尾

python - 在 Linux 上无限期运行脚本的最可靠方法

linux - 在 shell 脚本中使用变量时找不到 ssh

linux - 在 shell 脚本中运行命令

java - Unicode 适用于 Windows 但不适用于 Red Hat Linux : Java

linux - 检索可用内存时 IF 语句上的 Bash 整数表达式

shell - 无法将 ‘const char*’ 转换为 ‘char* const*’

linux - 如何将文件从 dockerfile 复制到主机?