명령줄을 통해 실행할 때 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

쉘 스크립트에 전달된 모든 매개변수는 다음 위치에 저장됩니다.$@, 이를 반복할 수 있습니다.

#!/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 ]$func함수일 때만 함수 호출을 하도록 하세요 .

예:

$ ./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

관련 정보