[解決済み】配列のループ処理でインデックスと値の両方が表示される。
2022-04-02 07:21:51
質問
このようなことをしたいのですが。
foo=( )
foo[0]="bar"
foo[35]="baz"
for((i=0;i<${#foo[@]};i++))
do
echo "$i: ${foo[$i]}"
done
# Output:
# 0: bar
# 1:
そして、for inを使ってループさせようとしました。
foo=( )
foo[0]="bar"
foo[35]="baz"
for i in ${foo[@]}
do
echo "?: $i"
done
# Output:
# ?: bar
# ?: naz
が、ここではインデックス値が分からない。
のようなことができるのは知っています。
foo=( )
foo[0]="bar"
foo[35]="baz"
declare -p foo
# Output:
# declare -a foo='([0]="bar" [35]="baz")'
でも、もっと別のやり方はないのでしょうか?
どのように解決するのですか?
配列のキーは
"${!foo[@]}"
(
参照
)ですから。
for i in "${!foo[@]}"; do
printf "%s\t%s\n" "$i" "${foo[$i]}"
done
つまり、インデックスが
$i
一方、要素そのものへのアクセスは
${foo[$i]}
関連
-
[解決済み] '\r': command not found - .bashrc / .bash_profile [duplicate].
-
[解決済み] etc/profileでVISIBLE=NOWを設定するのはなぜですか?
-
[解決済み] Bashで標準出力と標準エラーの両方をファイルにリダイレクトして追記する方法
-
[解決済み] ターミナルで現在の行をクリア/削除するにはどうすればよいですか?
-
[解決済み] Bashコマンドからテキストファイルの内部を検索・置換する
-
[解決済み] Colorized grep -- マッチをハイライトしてファイル全体を表示する
-
[解決済み] Condaがデフォルトでベース環境を起動しないようにするにはどうしたらいいですか?
-
[解決済み] Bashでコマンドの前に環境変数を設定すると、パイプ内の2番目のコマンドで動作しない
-
[解決済み】画面に表示したままstdoutをパイプする方法は?(出力ファイルには出力しない)
-
[解決済み】複数のコマンドの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: 予期しないトークン「改行」付近での構文エラー
-
[解決済み】ZIPエラー - 何もできない
-
[解決済み】ログアウトと再ログインをせずに.bashrcの設定を再読み込みする方法?
-
[解決済み] シェルスクリプトでブール変数を宣言して使用するにはどうすればよいですか?
-
[解決済み] ファイルに書き込むが、ファイルが存在する場合は上書きする
-
[解決済み] curl: 引数リストが長すぎる
-
[解決済み] あいまいなリダイレクト」エラーが発生する
-
[解決済み] bashスクリプトでfindコマンドを使用する
-
[解決済み] MINGW64 "make build" エラー。"bash: make: コマンドが見つかりません"
-
[解決済み】bashの文字列の長さについて