我正在尝试维护一些可在几个不同平台上使用的 bash 脚本。我在导出函数时遇到了一些我无法解释的奇怪问题。以下测试脚本:
#!/bin/bash
function test_fn() {
echo "In test_fn()"
}
export -f test_fn
echo test1 test2 | xargs -d ' ' -n1 -I{} bash -c "test_fn {}"
bash 4.1 和 4.3 中的行为不同,我不确定为什么:
$ /bin/bash test-fn.sh
bash: test_fn: command not found
$ /bin/bash --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
$ bash test-fn.sh
In test_fn()
In test_fn()
$ bash --version
GNU bash, version 4.3.39(1)-release (x86_64-unknown-linux-gnu)
这可能是炮弹休克修复的某种效果吗?