Как упоминал @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
, но разные младшие номера.
Вам действительно следует использовать массивы для такого рода задач:
#!/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
Мне удалось добиться этого с помощью следующего:
#!/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}
. Хотя в моей системе работает.