通过命令行运行时,在脚本中将 bash 函数作为参数的最佳方法是什么?

通过命令行运行时,在脚本中将 bash 函数作为参数的最佳方法是什么?

我对 bash 脚本相当陌生,想知道在通过命令行运行时使脚本中的 bash 脚本函数作为参数的最简单方法是什么?

用法示例:

./myscript function1
./myscript function2

myscript 的示例内容:

echo "Example myscript"

function1() { 
    echo "I am function number 1"
}

function2() { 
    echo "I am function number 2"
}

if [ $# -eq 0 ]; then
    echo "Specify a function. E.g. function1"
    exit 1;
fi

该脚本仅在命令行调用时执行特定函数,否则将显示一些示例用法。它需要可供 cron 和此类进程使用,并由用户执行。

答案1

传递给 shell 脚本的所有参数都存储在$@,你可以循环它们:

#!/bin/bash

echo "Example myscript"

function1() { 
    echo "I am function number 1"
}

function2() { 
    echo "I am function number 2"
}

if [ $# -eq 0 ]; then
    echo "Specify a function. E.g. function1"
    exit 1;
fi

for func do
  [ "$(type -t -- "$func")" = function ] && "$func"
done

[ "$(type -t -- "$func")" = function ]确保我们只在$funcis 函数时进行函数调用。

例子:

$ ./test.sh function1
Example myscript
I am function number 1

$ ./test.sh function1 function2
Example myscript
I am function number 1
I am function number 2

相关内容