[解決済み] Bashで配列の要素を結合するには?
2022-03-20 19:47:27
質問
Bashでこのような配列があった場合。
FOO=( a b c )
カンマで要素を結合するには? 例えば
a,b,c
.
解決方法は?
複数文字のデリミタをサポートする100%純粋なBash関数は。
function join_by {
local d=${1-} f=${2-}
if shift 2; then
printf %s "$f" "${@/#/$d}"
fi
}
例えば
join_by , a b c #a,b,c
join_by ' , ' a b c #a , b , c
join_by ')|(' a b c #a)|(b)|(c
join_by ' %s ' a b c #a %s b %s c
join_by $'\n' a b c #a<newline>b<newline>c
join_by - a b c #a-b-c
join_by '\' a b c #a\b\c
join_by '-n' '-e' '-E' '-n' #-e-n-E-n-n
join_by , #
join_by , a #a
上のコードは @gniourf_gniourf さん、@AdamKatz さん、@MattCowell さん、@x-yuri さんのアイデアに基づいています。これは、オプション
errexit
(
set -e
) と
nounset
(
set -u
).
あるいは、1文字のデリミタのみをサポートする、よりシンプルな関数もあります。
function join_by { local IFS="$1"; shift; echo "$*"; }
例えば
join_by , a "b c" d #a,b c,d
join_by / var local tmp #var/local/tmp
join_by , "${FOO[@]}" #a,b,c
この解決策は、Pascal Pilzのオリジナルの提案に基づくものです。
以前にここで提案した解決策の詳細な解説は の記事、"How to join() array elements in a bash script"。 メレウ で デブ・トゥ .
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] Bash prints リテラルの改行をエコーする \n
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] JavaScriptで配列の先頭に新しい配列要素を追加するにはどうすればよいですか?
-
[解決済み] リストがどの程度ソートされているかを測定する方法はありますか?
-
[解決済み] Swiftの配列から最小値・最大値を求める
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] TypeScriptで配列の項目を削除するには?
-
[解決済み] Swift カスタムオブジェクトの配列をプロパティ値でソートする方法
-
[解決済み] ある要素が配列に含まれているかどうかを確認する方法
-
[解決済み] Swiftでリストアイテムのインデックスを見つける方法は?
-
[解決済み] TypeScriptのオブジェクトをC#のようにDictionary型にする
-
[解決済み】数値の配列が与えられたとき、他のすべての数値の積の配列を返す(除算なし)
-
[解決済み】Bashでコマンドライン引数を配列に変換する。
-
[解決済み] PostgreSQLは配列のカラムにインデックスを付けることができますか?
-
[解決済み] Luaの配列(テーブル)はなぜ0ではなく1から始まるのですか?
-
[解決済み] スライスの値を表示する方法