Bash

bash:從“bash -c”呼叫函式

  • October 7, 2019

我試圖讓我的 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_functionor declare -fx inner_function

請注意,導出的 shell 函式是**a)**僅限 bash 的功能,在其他 shell 中不支持;b)即使在shellshock之後修復了大多數錯誤之後,仍然存在爭議。

當我在多個腳本中需要相同的功能時,我將它放在一個側面的“庫”腳本文件中,並將該(source the_lib_script. the_lib_script)“源”放在需要該功能的腳本中。

引用自:https://unix.stackexchange.com/questions/545464