Bash でスペースを含むフォルダを配列で処理する

Bash でスペースを含むフォルダを処理したかったのですが、うまくできなかったのでメモ。

こうする

#!/bin/bash

dirs=("Documents" "VirtualBox VMs")

for d in "${dirs[@]}"; do
    echo "$d"
done

結果:

Documents
VirtualBox VMs

これはダメ

${dirs[@]} をダブルクォートしないとスペース区切りで処理されてしまう。

#!/bin/bash

dirs=("Documents" "VirtualBox VMs")

for d in ${dirs[@]}; do
    echo "$d"
done

結果:

Documents
VirtualBox
VMs

Date: 2019/02/11

Tags: bash