⇧ 管理が煩雑にならないなら大歓迎ではありますが...
positional parameter(位置パラメーター)とは?
これといって、公式な情報による説明が見つからんのだけど、
位置パラメータとは, スクリプトが呼び出された際の コマンドライン引数を保持 するための特別な組込み変数である.
https://se.cite.ehime-u.ac.jp/~aman/memo/bash/shell_prog1.html
A positional parameter is an argument specified on the command line, used to launch the current process in a shell. Positional parameter values are stored in a special set of variables maintained by the shell.
https://www.computerhope.com/jargon/p/positional-parameter.htm
とあり、シェルでコマンドを実行する際の引数を保持しているものらしい。上記サイト様の説明が正しいとするならば、「positional parameter(位置パラメーター)」はシェルで管理されてるらしい。
シェルはと言うと、
⇧ Linuxを構成している一要素ですと。
シェルは、種類が様々であるようですが、
⇧ bashがメジャーなんかね?
シェルスクリプトの関数内でpositional parameter(位置パラメーター)は直接参照できない罠
で、「positional parameter(位置パラメーター)」ですが、シェルスクリプトの関数内で直接参照できないという、まさかの罠がありました...
「WSL 2(Windows SubSystem for Linux 2)」の「Oracle Linux 8.7」環境に、「WinSCP」でシェルスクリプトファイルを配置し、「Oracle Linux 8.7」にログインして、配置したシェルスクリプトファイルを実行してみました。
#!/bin/bash if [ -z "$1" ]; then echo "args empty." fi readonly value="value" test="test" input="$1" tmp="$1" select_done () { if [ -z "${input}" ]; then echo "empty" '$input='"${input}" fi if [ -z "$1" ]; then echo "empty" '$1='"$1" fi if [ -z "${tmp}" ]; then echo "empty" '$tmp='"${tmp}" fi echo "select_done () execute " echo ${value} echo ${test} } select_done "$value" "$1" "$tmp" echo "done"
⇧ 実行結果から分かったことは、「positional parameter(位置パラメーター)」については、一旦、変数に格納しないと、関数内からは参照できないらしい...
あと、関数名でエラーになるのがあるな~、シェルスクリプトでも「予約語」みたいな制限あるんかな?って思ってたら、
⇧ 上記サイト様で、「予約語」が紹介されていて、『select』は「予約語」になってました。
いや、別に、「予約語」とかあるのは分かったんやけど、
⇧ 全く役に立たないエラーを止めてくれと...
「予約語」の前提知識とか無いと、関数名に『select』が使えないのが分からんから...
エラーメッセージを「予約語」を関数名に使えないことが分かるようなものにしてもらえんと、何が悪いのかサッパリ分からんですから...
毎度モヤモヤ感が半端ない...
今回はこのへんで。