Я действительно новичок в bash и только сегодня начал писать небольшой планировщик. После тестирования на Mac и Ubuntu все работало нормально. Но когда я хотел выполнить его в альпийском Linux, выдается ошибка: арифметическая синтаксическая ошибка. Я не могу понять, почему это так, и не смог найти решение в дяде Google. Я надеюсь, что кто-то может мне помочь.
Это выражение:
[ $((10#$(date +"%H%M") != 10#$START_TIME)) = 1 ]
В контексте, показывающем, как это выполняется:
#!/bin/bash
START_TIME=2100
END_TIME=2200
# arithmetic syntax error
while [ $((10#$(date +"%H%M") != 10#$START_TIME)) = 1 ]; do
sleep 10;
done
sh
реализуетсяash
илиdash
. - person Charles Duffy   schedule 09.01.2018sh scriptname
? Поскольку у него есть шебанг#!/bin/bash
, это указывает на то, что он был написан для работы только в системах с установленнымbash
и для использованияbash
в качестве интерпретатора. Alpine не поставляет bash — у него есть меньшие по размеру и более быстрые для запуска оболочки, такие какdash
. - person Charles Duffy   schedule 09.01.2018The # isn't treated as a comment when it's in the middle of a word
для моего теперь удаленного ответа.. О боже, о боже. Спасибо за это понимание. :) - person sjsam   schedule 09.01.2018