Điểm:0

Làm cách nào để thêm hai giá trị số nguyên trong Linux?

lá cờ cn
#!/bin/bash

cd /pg
tệp=`ls -l |awk '{in $9}'`
danh sách =()
cho tôi trong $file
làm
  tiếng vang $i
  a=`mèo /pg/$i | đầu -n 1 |awk '{in $8}'`
  b=`mèo /pg/$i | đầu -n 2 |awk '{in $8}'`
  #a1=`echo "$a" | tr -d '"'`
  #b1=`echo "$b" | tr -d '"'`
  tiếng vang $a
  tiếng vang $b
  c="$(($a+$b))"
  danh sách=($c)
  #a1=`mèo /pg/$i | đầu -n 2 |awk '{in $8}'`
xong

Trong khi thực thi đoạn mã trên, tôi gặp lỗi bên dưới, vui lòng giúp tôi khắc phục sự cố đầu ra của các giá trị là a=30b=30 nhưng vẫn không thể thêm cả hai.

/bin/max_timetrack.sh: dòng 16: 30+30
30: lỗi cú pháp trong biểu thức (mã thông báo lỗi là "30")
Điểm:5
lá cờ in

Lỗi của bạn là ở dòng này:

b=`mèo /pg/$i | đầu -n 2 |awk '{in $8}'`

cái đầu sẽ không cung cấp cho bạn dòng thứ hai, nhưng N dòng đầu tiên.
Cho nên b thực sự sẽ là:

30
30

và không 30 làm thế nào bạn nói. Do đó lỗi,

30+30
30

Bạn sẽ cần (trong khi vẫn giữ cấu trúc phức tạp của mình):

b=`mèo /pg/$i | đầu -n 2 |awk '{in $8}' | đuôi -n 1`

Tuy nhiên!

Có rất nhiều cách sử dụng vô ích/lạ trong tập lệnh nhỏ của bạn:

Điều này sẽ là đủ:

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

Lưu ý việc sử dụng $(...) thay vì backticks, điều này giống nhau nhưng được ưu tiên.

Tương tự với dòng này

a=`mèo /pg/$i | đầu -n 1 |awk '{in $8}'`

sẽ tốt hơn

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

Dù sao, bạn có thể làm số học bên trong awk chỉ có:

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

Ngoài ra bạn là phân tích cú pháp ls, đó là một lựa chọn tồi:

tập tin=`ls -l | awk '{in $9}'`

Bạn không thể làm điều này?

cho tôi trong *; làm xong

Tùy thuộc vào những gì bạn muốn làm với c, bạn có thể viết toàn bộ tập lệnh dưới dạng một awk chỉ huy.

hariraj avatar
lá cờ cn
Cảm ơn Mr.PLumo câu trả lời trên phù hợp với tôi.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.