Вы вызываете команду оболочки return
, что не имеет смысла.
В общем случае, команда return
без последующего значения возвращает статус выхода последней выполненной команды.
Из команды man
: Причиняет функцию к выходу со значением возврата, заданным n. Если n опущено, то статус возврата - это статус последней выполненной команды в теле функции.
<<<
в bash - это здесь строка . Вы передали саму строку сценария tac /DIRECTORY/TO/FILE.csv ...
в , в то время как стандартный ввод
.
Возможно, вы захотели использовать замену процесса :
while read f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15
do
...
done < <(tac /DIRECTORY/TO/FILE.csv ...)
вы можете попробовать
tac /DIRECTORY/TO/FILE.csv |
sed -e 's/o,632/o,101/g' -e 's/o,938/o,103/g' -e 's/o,510/o,112/g' -e 's/ombo,713/ombo,102/g' |
while read f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15
do
if [ "$f7" = "EnHr" ] && [ "$f10" -gt 0 ] && [ "$f4" = "$m_class" ] && [ "$f5" = "$m_id" ]
then
hex_sensor_data=$f10
echo "IN IF LOOP: $hex_sensor_data"
break
fi
done
|
)