Bash - Цикл через вложенный цикл for с использованием массивов

Вы должны использовать весь диск, а не только первый раздел:

sudo dd if=ubuntu-14.04.3-desktop-i386.iso of=/dev/sda

Вы можете узнать прогресс dd, запустив его во втором терминале:

sudo kill -USR1 $(pidof dd)

Прогресс показан в первом терминале.

Вы уверены, что /dev/sda - это правильно? Обычно это первое устройство, встроенный жесткий диск.

0
19.03.2018, 16:17
2 ответа

Чтобы расширить косвенность массива, строка [@]должна быть частью переменной. Работает для значений:

for thelist in "${master_list[@]}" ; do
    reallist=$thelist[@]
    for key in "${!reallist}" ; do
        echo "the key is: $key"
    done
done

Что касается ключей, я не вижу пути без eval.

for thelist in "${master_list[@]}" ; do
    eval keys=('"${!'$thelist'[@]}"')
    for key in "${keys[@]}" ; do
        echo "the key is: $key"
    done
done

Если вы уверены, что главный _список содержит только имена переменных, он должен быть безопасным.

1
28.01.2020, 02:43

Забавно играть с , но у bash, похоже, есть некоторые проблемы, которые нужно следовать вашему воображению;)

list_a=( 1 2 )
list_b=( 3 4 )

for key in "${list_a[@]}" "${list_b[@]}"; do
  echo "the key is: $key"
done

Выход:

the key is: 1
the key is: 2
the key is: 3
the key is: 4
0
28.01.2020, 02:43

Теги

Похожие вопросы