[解決済み】bashでパラメータとして配列を渡す。
2022-04-11 14:42:21
質問
bashの関数にパラメータとして配列を渡すにはどうしたらいいですか?
注意してください。
Stack Overflowで答えが見つからなかったので、自分で多少雑な解決策を投稿してみました。これは、1つの配列だけを渡すことができ、それはパラメータリストの最後の要素になります。実際には、配列を渡すのではなく、その要素のリストを渡しています。
called_function()
しかし、私の場合はうまくいきました。もし、もっと良い方法を知っている人がいたら、遠慮なくここに追加してください。
解決方法は?
を渡すことができます。 引数として複数の配列 のような使い方をします。
takes_ary_as_arg()
{
declare -a argAry1=("${!1}")
echo "${argAry1[@]}"
declare -a argAry2=("${!2}")
echo "${argAry2[@]}"
}
try_with_local_arys()
{
# array variables could have local scope
local descTable=(
"sli4-iread"
"sli4-iwrite"
"sli3-iread"
"sli3-iwrite"
)
local optsTable=(
"--msix --iread"
"--msix --iwrite"
"--msi --iread"
"--msi --iwrite"
)
takes_ary_as_arg descTable[@] optsTable[@]
}
try_with_local_arys
が表示されます。
sli4-iread sli4-iwrite sli3-iread sli3-iwrite
--msix --iread --msix --iwrite --msi --iread --msi --iwrite
編集・注釈 (以下コメントより)
-
descTable
とoptsTable
は名前として渡され、関数内で展開される。したがって$
をパラメータとして与える必要があります。 -
なお、これは
descTable
などが定義されています。local
なぜなら、ローカルは呼び出した関数から見えるからです。 -
は、その
!
で${!1}
は、arg 1変数を展開します。 -
declare -a
は、インデックス付き配列を明示的にするだけで、厳密には必要ではありません。
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Bash prints リテラルの改行をエコーする \n
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで文字列の配列をループする?
-
[解決済み] Bash関数にパラメータを渡す
-
[解決済み】Bashでファイル名と拡張子を抽出する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ファイルからBashの配列に行を読み込む【重複
-
[解決済み] Perl の配列を繰り返し処理する最適な方法
-
[解決済み] Bash関数にパラメータを渡す
-
[解決済み】空のスライスを初期化する正しい方法
-
[解決済み】JSONのオブジェクトの配列をYAMLで表現したもの
-
[解決済み】KotlinのList型とArray型の違いについて
-
[解決済み】Bashでスペースで区切られた文字列を配列に読み込む
-
[解決済み】Bashで配列をスライスする方法
-
[解決済み】要素を配列の先頭にプッシュする最も簡単な方法は何ですか?
-
[解決済み】240以上の要素を持つ配列に対してループ処理を行うと、パフォーマンスに大きな影響があるのはなぜですか?