попробуйте для записи в оболочке run at boot
at now +10 minutes <<EOF
/usr/bin/curl -u admin:$PASSWORD -i -H 'X-Requested-By: ambari' -X PUT -d '{"RequestInfo": {"context" :"Stop HDFS via REST"}, "Body": {"ServiceInfo": {"state": "INSTALLED"}}}' http://AMBARI_SERVER_HOST:8080/api/v1/clusters/CLUSTER_NAME/services/HDFS
echo hello curl > /tmp/curl.log
EOF
/etc/rc.local
или /etc/rcX.d
, если у вас больше знаком с run-level. Если вы хотите, чтобы ваша value
переменная была 00
, не объявляйте ее как целое число в bash
. Объявление его как целого числа с declare -i
предложит оболочке оценить его как целое число, а целочисленное значение 00
равно нулю.
Обратите внимание, следующий код выведетnot same
:
declare -i value='00'
optics_status='00'
if [ "$optics_status" = "$value" ]; then
echo 'same'
else
echo 'not same'
fi
Изменение declare -i value='00'
на value='00'
приведет к выводу same
.
Также обратите внимание на цитирование расширений переменных выше.
Конечно, вы могли бы также рассмотреть преобразование значений обеих переменных в целые числа, сравнив их с помощью
if [ "$optics_status" -ne "$value" ]; then
или
if (( optics_status != value )); then
но это предполагает, что вы знаете, что $optics_value
это всегда будет строкой, которая может быть преобразована в целое (и десятичное целое число, а не восьмеричное целое тоже ).
cut
включены, поэтому вы вытащили три символа. Один из этих символов может быть невидимым, например пробел, табуляция или новая строка. Это отличает строку от значения 00
.
В общем, попробуйте set -o xtrace
посмотреть, что происходит при запуске вашего скрипта. И Используйте Больше Цитат™ !