Печать значения переменной через циклы

Как упоминал @Daemon, это старшие и младшие числа. Старшие номера являются общими для определенного типа устройств.

Например, запуск:

ls -l /dev | grep -P "tty\d$"

Производит:

crw--w----  1 root tty     4,   0 May 26 23:41 tty0
crw--w----  1 root tty     4,   1 May 26 23:41 tty1
crw--w----  1 root tty     4,   2 May 26 23:41 tty2
crw--w----  1 root tty     4,   3 May 26 23:41 tty3
crw--w----  1 root tty     4,   4 May 26 23:41 tty4
crw--w----  1 root tty     4,   5 May 26 23:41 tty5
crw--w----  1 root tty     4,   6 May 26 23:41 tty6
crw--w----  1 root tty     4,   7 May 26 23:41 tty7
crw--w----  1 root tty     4,   8 May 26 23:41 tty8
crw--w----  1 root tty     4,   9 May 26 23:41 tty9

Все они имеют общий старший номер 4, но разные младшие номера.

0
20.04.2018, 00:45
2 ответа

Вам действительно следует использовать массивы для такого рода задач:

#!/bin/bash
values=( 
    1500067
    1500068
    1500069
)
packages=( 
    CNN 
    FOX 
    Discovery
)

for (( i=0; i < ${#values[@]}; i++ )); do
    echo "${values[i]} - ${packages[i]}"
done

Или, поскольку у вас есть пары значений естественного ключа -, ассоциативный массив

#!/bin/bash
declare -A packages=( 
    [1500067]=CNN 
    [1500068]=FOX 
    [1500069]=Discovery
)

for key in "${!packages[@]}"; do
    echo "$key - ${packages[$key]}"
done
3
28.01.2020, 02:16

Мне удалось добиться этого с помощью следующего:

#!/bin/sh
value1="1500067"
value2="1500068"
value3="1500069"
package1="CNN"
package2="FOX"
package3="Discovery"

for i in {1..3}; do
    var1="value$i"
    var2="package$i"
    echo "${!var1} - ${!var2}"
done

Ваше двойное заключение команды echo в кавычки является излишним, вы на самом деле не указали переменные из-за того, как это было настроено. Достаточно просто заключить весь аргумент в одну пару кавычек. Если вы столкнулись с ситуацией, когда вам нужно что-то противопоставить вашей переменной, лучше использовать скобки, чтобы сохранить ее имя:

${var1}_something_else

Имейте в виду, что, несмотря на #!/bin/shхэш-банг, я полагаю, что это содержит некоторые bash -измы {1..3}и косвенные ссылки ${1var}. Хотя в моей системе работает.

2
28.01.2020, 02:16

Теги

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