改行文字にインデックス番号を持つエコー配列

改行文字にインデックス番号を持つエコー配列

改行文字で配列のすべての要素をエコーし​​、その横にインデックス番号を追加しようとしています。これにより、いくつかの入力を受け入れてから配列要素を選択してテキストエディタで開くことができます。 (すべて設定ファイルです)。

私は現在これをやっています:

declare -a configs=(
"~/.vimrc"
... )

printf "%s\n"  "${configs[@]}"

各設定パスに出力がありますが、各要素の先頭にインデックス番号を追加する方法がわかりません。

ベストアンサー1

配列を繰り返すだけです。

$ declare -A configs=( [vimrc]="~/.vimrc" [foo]="bar" [baz]="bad" )
$ for i in "${!configs[@]}"; do printf '%s: %s\n' "$i" "${configs[$i]}"; done
foo: bar
baz: bad
vimrc: ~/.vimrc

または、配列の値またはキーに改行なしで同じ基本的なアプローチを使用するには、次のようにします。

#!/bin/bash
declare -A configs=( [vimrc]="~/.vimrc" [foo]="bar" [baz]="bad"  )

  paste \
    <(printf '%s\n' "${!configs[@]}" ) \
    <(printf '%s\n' "${configs[@]}" )

私はbashが常に${!configs[@]}同じ順序で維持されると仮定していますが、${configs[@]}実際にはわかりません。したがって、個人的に値が100%確実になるように配列を明示的に繰り返す方が便利です。正しい。

おすすめ記事