@Arseniy_vka

Bash, head и tail: Невозможно открыть для чтения?

Всем доброго дня.
Буду очень признателен, если поможете.
Есть bash скрипт для анализа тех. состояния системы, листинг кода:
#! /bin/bash
touch logfile
while true
do
	echo $(date) >> logfile
	var=$(uptime | tail  -n –c17 | head -n –c4)
	cpuload=$(($var*1))
	echo current cpu load is $cpuload % >> logfile 
	echo $(df  –h  /  |  grep  /) >> logfile
	temp=$(cat  /sys/class/thermal/thermal_zone0/temp)
	echo “current temp is $((temp/1000)) c” >> logfile
	echo “----------------------------------------” >> logfile
	sleep 1
done


При запуске его в терминале в head и tail выдает ошибку: невозможно открыть файл для чтения.

UPD: разобрался с head и tail, осталась одна ошибка в 7 строке: ./analiz.sh: строка 7: *1: синтаксическая ошибка: ожидается операнд (неверный маркер «*1»)
  • Вопрос задан
  • 423 просмотра
Пригласить эксперта
Ответы на вопрос 2
xotkot
@xotkot
хорошо есть и хорошо весьма
осталась одна ошибка в 7 строке: ./analiz.sh: строка 7: *1: синтаксическая ошибка: ожидается операнд (неверный маркер «*1»)

cpuload=$(($var*1))
во первых можно визуально немного упростить
cpuload=$[var*1]
во вторых, ругается из за того что переменная var пустая
можно задать значение для var если она будет пуста
cpuload=$[${var:=999}*1]
здесь если переменная var не заданна то её значение для этого выражение станет равным 999
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
cpuload=$(($var*1))
А зачем вообще вам нужна конструкция с умножением на 1? Какой смысл?
Сделать числовую переменную? Так делайте так
declare -i var

А так, скорее всего у вас в этот момент $var не был задан, вот и пытается пустоту умножить на 1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы