Последние несколько месяцев я учусь писать сценарии бэша. Что я узнал, так это то, что в bash нет булевых переменных. Однако, это не значит, что нет никаких булевых значений.
If/then ищет 1 или 0. Now.... здесь предостережение: 0 - правда, а все остальное - ложь. Например, когда вы проверяете, существует ли непосредственно a, результат возвращается как 0, а не 1.
Если вы получите какой-либо код ошибки от вызываемой функции, вы можете поймать эту ошибку в ловушку.
Итак, попробуйте вместо этого:
FLAG_Control=1
if [ $FLAG_Control ] && [ -d /path/to/dir ];then
echo "Run script.."
fi
Более того, недостаточно разрешить пинги на сервере; ноутбуки должны быть настроены так, чтобы они знали, что могут достичь другого через сервер (маршрутизацию).
Вероятно, в вашем брандмауэре есть правило, которое разрешает пакеты, которые являются ответом. Если нет, то вам также нужно
, что в любом случае имеет смысл, так как вы, вероятно, хотите разрешить обоим ноутбукам пинговать другой. Вы можете ограничиться пингом и пинг-понгом, однако: