パラメータを使用する関数をどのように作成しますか?
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
関連: