Пропустить первые 3 строки цикла while

Если это ключ, который используется достаточно часто, хитрость заключается в том, чтобы добавить этот ключ в цепочку для ключей:

eval `keychain --eval --agents ssh id_rsa a_test.tester_key

После этого будет использоваться правая клавиша.

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

2
16.01.2020, 07:22
3 ответа

Вот более специфичный для bash синтаксис.

i=3 n=0
while read -r line; do
  ((n >= i )) && echo "$line"
  ((n++))
done < file
3
27.01.2020, 21:51

Это зависит от того, что вы хотите сделать со строками, но если вы можете обернуть их в обратный вызов и иметь bash версии 4+, вы можете использоватьmapfile(или его синонимreadarray)с его-s(пропустить опцию ).

Пр. дано

$ echo "$LINES"
----
Test
---- 
1,2,3 
1,2,4 
etc

затем после определения

myfunc() { printf "%s\n" "$2"; }

можешь сделать

$ mapfile -t -s3 -c1 -C 'myfunc' <<< "$LINES"
1,2,3 
1,2,4 
etc
2
27.01.2020, 21:51

Учитывая, что содержимое переменной аналогично упомянутому, чтение данных из 4-й строки $LINEявляется одним из решений. Это можно сделать так:

tail +4 <<< "$LINE"

Это печатает каждую строку с 4-й строки $LINEдо последней строки.

Если вы хотите, чтобы его результат использовался внутри while, лучше подойдет

while IFS= read -r; do echo $REPLY; done <<< "$(tail +4 <<< "$LINE")".

3
27.01.2020, 21:51

Теги

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