Использование нескольких переменных в цикле for

Вы можете попытаться выяснить, имеет ли процесс высокий уровень использования ЦП (используя «Системный монитор»). Это может привести к большому количеству тепла.

Если тепло создано вашим процессором, вы можете попробовать установить «indicator-cpufreq», а затем вы можете установить его «powerave». Это, возможно, сделает ваш компьютер немного медленнее, но должен сделать его менее горячим.

1
задан 5 November 2016 в 11:47

2 ответа

Позволяет создать переменную, указывающую на местоположение файла

FILE="/home/user/myfile"

Содержимое файла:

www.google.com 
www.yahoo.com

Чтобы получить вывод: [ ! d3]

1 www.google.com
2 www.yahoo.com

Это можно сделать одним из следующих способов:

Использование переменной счетчика:

i=1; 
cat $FILE | while read line; do 
    echo "$((i++)) $line"; 
done
[ ! d7]

Использование cat -n (число всех выходных строк)

cat -n $FILE | while read line; do 
    echo "$line"; 
done

Использование массива:

array=(www.google.com www.yahoo.com);
for i in "${!array[@]}"; do 
    echo "$((i+1)) ${array[$i]}"; 
done

Если ваш файл уже содержит номера строк, например:

1 www.google.com
2 www.yahoo.com

Петля и разделите каждую строку на массив:

cat $FILE | while read line; do
    col=( $line ); 
    echo "${col[0]} ${col[1]}"; 
done

info:

Как увеличить значение переменной в bash? Loop Through Array of Strings в синтаксисе сценариев скриптов Bash
4
ответ дан 23 May 2018 в 04:30

Вот несколько альтернативных способов, два коротких и простых:

 printf "%s\n" www.google.com www.yahoo.com | cat -n  

и

 for i in www.google.com www.yahoo.com; do echo $i; done | cat -n

, которые оба выводят:

 1  www.google.com
 2  www.yahoo.com

и немного сложнее:

s=(www.google.com www.yahoo.com)
for i in $(seq 1 ${#s[@]}); do
        echo $i ${s[i-1]}
done

, который выводит:

1 www.google.com
2 www.yahoo.com

Во втором предположении я использую массив с именем s, созданный с помощью строки s=(xx yy)

Синтаксис ${#s[@]} - это количество элементов в массиве, здесь 2 и ${s[i-1]} - элемент со смещением i-1 от начала массива, таким образом ${s[1-1]} ${s[0]}, а затем www.google.com и т. д.

3
ответ дан 23 May 2018 в 04:30
  • 1
    Я не знаю, что означает ${#s[@]} `$ {s [i-1]} 1. Здесь s - переменная, загруженная некоторыми значениями. Можете ли вы очистить мои сомнения? – SuperKrish 5 November 2016 в 18:15
  • 2
    Ответ отредактирован с добавленными пояснениями. – jlliagre 5 November 2016 в 19:26

Другие вопросы по тегам:

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