bash 4.3和4.4

时间:2018-10-05 09:59:31

标签: bash

在bash 4.3中通过bash -c foo prefix调用导出的函数时,错误消息前缀为“ prefix”。但是,对于bash 4.4中的同一命令,错误消息前缀变为“环境”。如何在bash 4.3和4.4中更改以下脚本以产生错误消息前缀“ prefix”?我将支持不涉及if-then-else或case-esac以及等效结构的解决方案。

#!/bin/bash
foo() { eval if; } # generate an error
export -f foo
echo $BASH_VERSION
bash -c foo prefix

脚本输出比较:

bash 4.3:

# /tmp/x
4.3.42(1)-release
prefix: eval: line 1: syntax error: unexpected end of file

bash 4.4:

# /tmp/x
4.4.18(1)-release
environment: eval: line 1: syntax error: unexpected end of file

我也想知道为什么会这样,为什么字符串“ environment”将$ 0替换为bash 4.4中的错误消息前缀?

0 个答案:

没有答案