Bash
bash:從“bash -c”呼叫函式
我試圖讓我的 bash 函式呼叫另一個使用
bash -c
. 我們如何使腳本中之前創建的函式在不同的 bash 會話之間持續存在?目前腳本:
#!/bin/bash inner_function () { echo "$1" } outer_function () { bash -c "echo one; inner_function 'two'" } outer_function
電流輸出:
$ /tmp/test.sh one bash: inner_function: command not found
期望的輸出:
one two
導出它:
typeset -xf inner_function
例子:
#! /bin/bash inner_function () { echo "$1"; } outer_function () { bash -c "echo one; inner_function 'two'"; } typeset -xf inner_function outer_function
寫完全相同的東西的其他方法是
export -f inner_function
ordeclare -fx inner_function
。請注意,導出的 shell 函式是**a)**僅限 bash 的功能,在其他 shell 中不支持;b)即使在shellshock之後修復了大多數錯誤之後,仍然存在爭議。
當我在多個腳本中需要相同的功能時,我將它放在一個側面的“庫”腳本文件中,並將該(
source the_lib_script
或. the_lib_script
)“源”放在需要該功能的腳本中。