関数パラメータを渡しますか?

関数パラメータを渡しますか?

パラメータを使用する関数をどのように作成しますか?

function arg_example {
    arg "c"  # This is imaginary but it would return 'true' if it found the argument -c.
    did_find_arg=$?  # Get the previous function (arg)'s output.

    if [$did_find_arg == 'true']; then
        echo "Yes!"
    else
        echo "Not found."
    fi
}

# Testing
arg_example  # "Not found."
arg_example -c  # "Yes!"
arg_example -k  # "Not found."

また、次のKey-Value関数の値を見つける方法は何ですか--name

function hello {
    echo "Hello, $--name!"
}

$1編集:andの使い方を知っていますが、orのような$2オプションのものを取得する方法を知りたいです。-v--version

ベストアンサー1

コマンドライン処理機能getoptsコマンドラインを処理するのと同じ方法で実行できます。スクリプト。注目すべき唯一のことは、OPTINDこれを1にリセットするか、関数に対してローカルにする必要があることです。

#!/bin/bash

myfunc () {
    local OPTIND
    local do_c=0
    local do_k=0
    local opt

    while getopts 'ck' opt; do
        case $opt in
            c) do_c=1 ;;
            k) do_k=1 ;;
            *) echo 'Error in command line parsing' >&2
               return 1
        esac
    done
    shift "$(( OPTIND - 1 ))"

    if [ "$do_c" -eq 1 ]; then
        echo 'Yes!'
    else
        echo 'Not found'
    fi
}

myfunc
myfunc -c
myfunc -k
myfunc -a

上記のスクリプトは以下を生成します。

Not found
Yes!
Not found
script.sh: illegal option -- a
Error in command line parsing

関連:

おすすめ記事