Bash-скрипт - вывод на одно число раз

У меня есть скрипт bash, который будет отображаться в файле config.txt. Каждый раз, когда он выполняется, я хочу, чтобы он вставил значение в качестве маркера.

Пример того, что у меня сейчас есть

echo userdataOH$((RANDOM % 10))\", >> /usr/local/src/bin/config.txt

Это выдаст userdataOH1-10, но случайное значение и значение могут быть одинаковыми.

Я хотел бы что-то вроде

echo userdataOH$((Value))\", >> /usr/local/src/bin/config.txt

с Value, равным 1-10, и числа не могут повторяться. Это возможно?

2
задан 2 January 2018 в 20:45

1 ответ

#!/usr/bin/env bash

config_file=/usr/local/src/bin/config.txt

last_value=$(tail -1 $config_file 2>/dev/null | perl -n -e 'print $1 if /OH(\d+)",\s*$/' || 0)
next_value=$((last_value + 1))

echo -n userdataOH$next_value\", >> $config_file

Строка last_value извлекает число после OH из последней строки входного файла (config.txt). Если такое число не может быть найдено, по умолчанию используется значение 0.

echo -n подавляет обычный \n (перевод строки) после эха. Без этого все новые строки userdataOHNN были бы на отдельной строке вместо добавления к последней строке.

Я не уверен насчет \" в вашем вопросе. Он печатает буквальный ". Бросьте его из команд echo и perl, если это опечатка.

1
ответ дан 2 January 2018 в 20:45
  • 1
    Мой lspci | grep -i vga вывод 00:02.0 VGA comaptible controller: Intel Corporation Atom Processor D2xxx/N2xxx Integrated Graphics Controller (rev 09). Так, это не Intel binary Xorg driver for GMA3600 (Cedarview) GPU? – RanRag 24 August 2012 в 00:59
  • 2
    Мой lspci | grep -i vga вывод 00:02.0 VGA comaptible controller: Intel Corporation Atom Processor D2xxx/N2xxx Integrated Graphics Controller (rev 09). Так, это не Intel binary Xorg driver for GMA3600 (Cedarview) GPU? – RanRag 24 August 2012 в 00:59
  • 3
    Мой lspci | grep -i vga вывод 00:02.0 VGA comaptible controller: Intel Corporation Atom Processor D2xxx/N2xxx Integrated Graphics Controller (rev 09). Так, это не Intel binary Xorg driver for GMA3600 (Cedarview) GPU? – RanRag 24 August 2012 в 00:59
  • 4
    Мой lspci | grep -i vga вывод 00:02.0 VGA comaptible controller: Intel Corporation Atom Processor D2xxx/N2xxx Integrated Graphics Controller (rev 09). Так, это не Intel binary Xorg driver for GMA3600 (Cedarview) GPU? – RanRag 24 August 2012 в 00:59
  • 5
    Мой lspci | grep -i vga вывод 00:02.0 VGA comaptible controller: Intel Corporation Atom Processor D2xxx/N2xxx Integrated Graphics Controller (rev 09). Так, это не Intel binary Xorg driver for GMA3600 (Cedarview) GPU? – RanRag 24 August 2012 в 00:59
  • 6
    Мой lspci | grep -i vga вывод 00:02.0 VGA comaptible controller: Intel Corporation Atom Processor D2xxx/N2xxx Integrated Graphics Controller (rev 09). Так, это не Intel binary Xorg driver for GMA3600 (Cedarview) GPU? – RanRag 24 August 2012 в 00:59

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

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