Değişkeni hesaplayın ve başka bir değişkene çıktılayın


11

Bildiğim tek hesap makinesi bc. 1Bir değişkene eklemek ve başka bir değişkene çıktı almak istiyorum .

nextnumBir dosyada dize sayma değişkeni var :

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

Diyelim ki nextnumdeğer 1. İle eklendiğinde 1, olacak 2. Hesaplamak için şunu çalıştırıyorum:

rownum=`$nextnum+1 | bc`

ama hata var:

1+1: command not found

Sadece hesaplama bölümünde başarısız oldum. Backtick'i değiştirmeyi denedim ama hala çalışmıyor. Değişkenleri hesaplamak ve başka bir değişkene çıktı nasıl hiçbir fikrim yok.


Yanıtlar:


22

İçindeki alt dize ` `geçerli bir komut olmalıdır:

rownum=`echo $nextnum+1 | bc`

Ancak aşağıdakilerin $( )yerine kullanılması tercih edilir ` `:

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

Ama buna gerek yok bc, kabuk tamsayı aritmetiği yapabilir:

rownum=$((nextnum+1))

Veya daha basit bashve ksh:

((rownum=nextnum+1))

8

Ayrıca dahili aritmetik bash kullanabilirsiniz:

rownum=$((nextnum+1))

ki bu biraz daha hızlı olurdu.


2

Kesinlikle doğru ve önerilen çözümleri tamamlayın, sadece Bourne-Shell'in mevcut olduğu eski zamanlarda nasıl yapılması gerektiğinden bahsetmek için, bu şekilde seviyor:

rownum=`expr $nextnum + 1` 

1

Kullanırdım (daha önce de belirtildiği gibi) rownum=$((nextnum+1))veya ((rownum=nextnum+1))standart bir komutu tercih ederseniz, let komutunu kullanabilirsiniz, örneğinlet rownum=$nextnum+1


1
Arayan letbir “standart komut” çok yanıltıcıdır. $((…))standart (POSIX) sözdizimidir, letksh (ve bash, zsh) uzantısıdır.
Gilles 'SO- kötü olmayı kes'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.