Jedyny kalkulator, jaki znam bc
. Chcę dodać 1
do zmiennej i wyprowadzić do innej zmiennej.
Mam nextnum
zmienną z liczenia łańcucha w pliku:
nextnum=`grep -o stringtocount file.tpl.php | wc -w`
Powiedzmy, że nextnum
wartość jest 1
. Po dodaniu z 1
, stanie się 2
. Aby obliczyć, uruchamiam:
rownum=`$nextnum+1 | bc`
ale dostał błąd:
1+1: command not found
Właśnie zawiodłem w części obliczeniowej. Próbowałem zmienić backtick, ale nadal nie działa. Nie mam pojęcia, jak obliczyć zmienne i wyprowadzić je do innej zmiennej.
shell
arithmetic
bc
calculator
apasajja
źródło
źródło
Odpowiedzi:
Podciąg wewnątrz
` `
musi być prawidłowym poleceniem:Ale lepiej jest używać
$( )
zamiast` `
:Ale nie ma takiej potrzeby
bc
, powłoka może wykonywać arytmetykę liczb całkowitych :Lub w jeszcze prostszy
bash
iksh
:źródło
Możesz także użyć wbudowanej arytmetyki w bash:
co byłoby nieco szybsze.
źródło
Absolutnie słuszne i uzupełnij sugerowane rozwiązania, aby wspomnieć o sposobie, w jaki trzeba to robić w dawnych czasach, gdy dostępna była tylko powłoka Bourne-Shell, właśnie tak to lubi:
źródło
Chciałbym używać (jak wspomniano wcześniej)
rownum=$((nextnum+1))
albo((rownum=nextnum+1))
ale jeśli wolisz standardowe polecenia można użyć komendy let, jaklet rownum=$nextnum+1
źródło
let
„standardowego polecenia” jest bardzo mylące.$((…))
jest standardową składnią (POSIX), natomiastlet
jest rozszerzeniem ksh (i bash, zsh).