if-statement буруу гаргалт

попробуйте для записи в оболочке 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.
  • Время создания /tmp/curl.log сообщит вам, запущен ли curl.
0
07.05.2018, 13:00
2 ответа

Если вы хотите, чтобы ваша 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это всегда будет строкой, которая может быть преобразована в целое (и десятичное целое число, а не восьмеричное целое тоже ).

2
28.01.2020, 02:23
Диапазоны

cutвключены, поэтому вы вытащили три символа. Один из этих символов может быть невидимым, например пробел, табуляция или новая строка. Это отличает строку от значения 00.

В общем, попробуйте set -o xtraceпосмотреть, что происходит при запуске вашего скрипта. И Используйте Больше Цитат™ !

1
28.01.2020, 02:23

Теги

Похожие вопросы