У меня есть сценарий 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, и числа не могут повторяться. Возможно ли это?
#!/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, если это была опечатка.
#!/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, если это была опечатка.
#!/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, если это была опечатка.