Bash script - вывод на одно число после t

У меня есть сценарий 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 в 21:45

3 ответа

#!/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, если это была опечатка.

2
ответ дан 22 May 2018 в 15:48
#!/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, если это была опечатка.

2
ответ дан 18 July 2018 в 00:01
#!/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, если это была опечатка.

2
ответ дан 24 July 2018 в 17:08

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

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