Рейтинг:0

Как добавить два целочисленных значения в Linux?

флаг cn
#!/бин/баш

компакт-диск / пг
file=`ls -l |awk '{print $9}'`
список=()
для я в $file
делать
  эхо $i
  a=`кошка /pg/$i | head -n 1 |awk '{print $8}'`
  b=`кошка /pg/$i | head -n 2 |awk '{print $8}'`
  #a1=`эхо "$a" | тр -д '"'`
  #b1=`эхо "$b" | тр -д '"'`
  эхо $а
  эхо $b
  с="$(($а+$б))"
  список=($с)
  #a1=`кошка /pg/$i | head -n 2 |awk '{print $8}'`
сделано

При выполнении приведенного выше кода я получаю следующую ошибку, пожалуйста, помогите мне исправить проблему, вывод значений а=30 и б=30 но все еще не в состоянии добавить оба.

/bin/max_timetrack.sh: строка 16: 30+30
30: синтаксическая ошибка в выражении (токен ошибки "30")
Рейтинг:5
флаг in

Ваша ошибка в этой строке:

b=`кошка /pg/$i | head -n 2 |awk '{print $8}'`

главный не даст вам вторую строку, но н первые строчки.
Так б на самом деле будет:

30
30

и нет 30 как ты сказал. Отсюда и ошибка,

30+30
30

Вам понадобится (при сохранении сложной структуры):

b=`кошка /pg/$i | head -n 2 |awk '{print $8}' | хвост -n 1`

Однако!

В вашем маленьком скрипте много бесполезного/странного использования вещей:

Этого будет достаточно:

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

Обратите внимание на использование $(...) вместо обратных кавычек, что то же самое но быть предпочтительным.

То же самое с этой строкой

a=`кошка /pg/$i | head -n 1 |awk '{print $8}'`

было бы лучше

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

В любом случае, вы можете сделать арифметику внутри аук Только:

c=$(awk 'NR<=2{sum+=$8}END{распечатать сумму}')

Также ты разбор лс, что является плохим выбором:

файл=`ls -l | awk '{напечатать $9}'`

Ты не можешь просто сделать это?

для я в *; сделать ... сделано

В зависимости от того, что вы хотите сделать с с, вы, вероятно, можете написать весь скрипт как один аук команда.

hariraj avatar
флаг cn
Спасибо, мистер PLumo, приведенный выше ответ работает на меня.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.