Puncte:0

Cum se adaugă două valori întregi în Linux?

drapel cn
#!/bin/bash

cd /pag
file=`ls -l |awk '{print $9}'`
lista=()
pentru i în $file
do
  eco $i
  a=`cat /pg/$i | head -n 1 |awk '{print $8}'`
  b=`cat /pg/$i | head -n 2 |awk '{print $8}'`
  #a1=`echo „$a” | tr -d '"'`
  #b1=`echo „$b” | tr -d '"'`
  ecou $a
  ecou $b
  c="$(($a+$b))"
  lista=($c)
  #a1=`cat /pg/$i | head -n 2 |awk '{print $8}'`
Terminat

În timp ce execut codul de mai sus, primesc eroarea de mai jos, vă rugăm să mă ajutați să remediez problema de ieșire a valorilor a=30 și b=30 dar tot nu se poate adăuga pe amândouă.

/bin/max_timetrack.sh: linia 16: 30+30
30: eroare de sintaxă în expresie (indicativul de eroare este „30”)
Puncte:5
drapel in

Eroarea ta este în această linie:

b=`cat /pg/$i | head -n 2 |awk '{print $8}'`

cap nu vă va da a doua linie, dar n primele rânduri.
Asa de b va fi de fapt:

30
30

si nu 30 cum ai spus. De aici eroarea,

30+30
30

Veți avea nevoie (în timp ce vă păstrați structura complicată):

b=`cat /pg/$i | head -n 2 |awk '{print $8}' | coada -n 1`

In orice caz!

Există o mulțime de utilizare inutilă/ciudată a lucrurilor în micul tău scenariu:

Asta ar fi suficient:

b=$(awk 'NR==2{printează $8}' "/pg/$i")

Observați utilizarea $(...) în loc de backticks, ceea ce este la fel dar de preferat.

La fel și cu această linie

a=`cat /pg/$i | head -n 1 |awk '{print $8}'`

ar fi mai bine

a=$(awk 'NR==1{printează $8}' "/pg/$i")

Oricum, poți face aritmetica înăuntru awk numai:

c=$(awk 'NR<=2{sum+=$8}END{printare suma}')

De asemenea, ești analizare ls, care este o alegere proastă:

fisier=`ls -l | awk '{print $9}''

Nu poți să faci asta?

pentru i în *; face... gata

Depinde cu ce vrei sa faci c, probabil că puteți scrie întregul script ca unul singur awk comanda.

hariraj avatar
drapel cn
Mulțumesc, domnule PLumo, răspunsul de mai sus funcționează pentru mine.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.