前提・実現したいこと
以下のような処理フローを、シェルスクリプトで実装したいです。
- 2つの引数を持つコマンド(シェルスクリプトファイルの名前)が叩かれる
- 定数を保持する2次元配列に対して、全要素の末尾に1の処理の引数を追加するという操作を行う
- 2の処理後の2次元配列に対して、ループを回し、結果を一つずつ、引数を持つ関数に渡す
- 関数を実行する
他の言語(JavaScript)ではすぐ実装できたのですが、bashで2次元配列を扱うのは一手間いる、かつ変数のスコープが厄介ということでなかなか実装できません。
お知恵を拝借できますと幸いです。
JavaScriptで書いたコード(動いた)
JavaScript
1function smtFunc(arg1, arg2, arg3, arg4, arg5) { 2 // 何らかの処理 3 // ここでは単にコンソール出力 4 console.log(arg1, arg2, arg3, arg4, arg5); 5 6 // 本来であれば以下のように渡していきたい 7 // command --opt1 $1 --opt2 $2 --opt3 $3 --opt4 $4 --opt5 $5 8} 9 10// 決まった値を初期値として持つ 11let set_arrays = [ 12 ["aSet1", "bSet1", "cSet1"], 13 ["aSet2", "bSet2", "cSet2"], 14]; 15 16// shellコマンドが叩かれた際に入ってくる値 17const inp1 = "inp1"; 18const inp2 = "inp2"; 19 20for (let i = 0; i < set_arrays.length; i ++) { 21 set_arrays[i].push(inp1, inp2); 22} 23 24// for文の結果、以下が得られる 25// [["aSet1", "bSet1", "cSet1", "inp1", "inp2"], ["aSet2", "bSet2", "cSet2", "inp1", "inp2"]] 26 27for (let i = 0; i < set_arrays.length; i ++) { 28 smtFunc( 29 set_arrays[i][0], 30 set_arrays[i][1], 31 set_arrays[i][2], 32 set_arrays[i][3], 33 set_arrays[i][4], 34 ); 35}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。