Обчисліть змінну та виведіть її на іншу змінну


10

Єдиний я знаю калькулятор bc. Я хочу додати 1змінну та вивести іншу змінну.

Я отримав nextnumзмінну від підрахунку рядка у файлі:

nextnum=`grep -o stringtocount file.tpl.php | wc -w`

Скажімо, nextnumзначення є 1. Коли його додадуть 1, він стане 2. Для обчислення запускаю:

rownum=`$nextnum+1 | bc`

але помилка:

1+1: command not found

Я просто провалився в частині розрахунку. Я спробував змінити backtick, але все ще не працює. Я не маю уявлення, як обчислити змінні та вивести її на іншу змінну.


Відповіді:


21

Підрядка всередині ` `має бути самою дійсною командою:

rownum=`echo $nextnum+1 | bc`

Але бажано використовувати $( )замість ` `:

rownum=$(echo $nextnum+1 | bc)

Але в цьому немає потреби bc, оболонка здатна робити цілу арифметику:

rownum=$((nextnum+1))

Або навіть простіше в bashі ksh:

((rownum=nextnum+1))

8

Ви також можете використовувати вбудовану арифметику в bash:

rownum=$((nextnum+1))

що було б трохи швидше.


2

Абсолютно правильно і доповніть запропоновані рішення, лише кажучи про те, як це потрібно було робити в колишні часи, коли був доступний лише Борн-Шелл, ось так це йому подобається:

rownum=`expr $nextnum + 1` 

1

Я хотів би використовувати (як згадувалося вище) rownum=$((nextnum+1))або , ((rownum=nextnum+1))але якщо ви віддаєте перевагу стандартну команду , яку ви можете використовувати команду LET, якlet rownum=$nextnum+1


1
Викликати let"стандартну команду" дуже вводить в оману. $((…))є стандартним синтаксисом (POSIX), тоді як letє розширенням ksh (і bash, zsh).
Жил 'ТАК - перестань бути злим'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.