touch file
test_max=45
for ((j=2,i=3;i<test_max;i++,j++)) ; do ln -s $j $i; done
for ((i=1;i<test_max;i++)) ; do if ! [ -f "$i" ]; then echo "$i"; break; fi ; done
41
Ваш вопрос немного сложно расшифровать, но я думаю, что это может быть то, что вы пытаетесь сделать:
ifconfig | grep -A1 "^eth-g0 " | grep -Eo "^eth[^ ]+|inet (addr )?[^ ]+" | paste - -
Я основывал это решение на командах, которые вы пытаетесь запустить, в надежде, что их будет легче понять.
Возможно, это не лучший способ сделать это.
$ ifconfig | awk '/^eth-g0/ { iface = $1; getline; sub("addr:", ""); print iface, $1, $2 }'
eth-g0 inet 222.222.22.22
Это анализирует вывод, используя awk
. При обнаружении строки, начинающейся со строки eth-g0
, первое слово сохраняется в переменной (это имя интерфейса ), затем сразу считывается следующая строка и addr:
удаляется из новой строки. Затем печатается имя интерфейса вместе с первыми двумя разделенными пробелами словами из новой строки.