Я вызываю следующий скрипт из другого скрипта bash для проверки изменений файла. Если SHA изменяется от одного исполнения к другому, документ Google обновляется.
Сценарий (пытается) принять идентификатор документа на диске Google в качестве параметра, а затем несколько раз пытается получить информацию (поскольку случайный сбой gdrive). Результаты имеют длину в несколько строк, поэтому сценарий выполняет SHA для результатов, чтобы получить уникальный короткий результат.
Это работало (когда gdrive возвращал результаты), поэтому я добавил цикл и сообщение об ошибке, чтобы сделать его немного более устойчивым, но ...
Должно быть, я что-то не так делаю с операторами if и, возможно, while в следующем сценарии, потому что сценарий циклически повторяется только один раз, даже когда результаты gdrive info не срабатывают. Также, когда строка для проверки длины установлена на что-то намеренно короткое.
Если бы у меня были волосы, я бы их выдернул.
#!/bin/bash
maxAttempts=10
minResult=100 # gdrive errors are about 80 characters
# If there was no parameter, give an error
[[ -z $1 ]] && errorMsg="Error: no google docs ID provided as a parameter" && echo $errorMsg && exit 0
# With an ID, get the file info, which includes a timestamp and return the SHA
attemptCount=0
strLength=1
while [[ "$strLength" < "$minResult" && "$attemptCount" < "$maxAttempts" ]];
do
((attemptCount++))
fileInfo="$(gdrive info $1)"
#fileInfo="TESTXXX" # use for testing different message lengths
strLength=${#fileInfo} # if under 100, the grive attempt failed
timeStamp="$(echo -n $fileInfo | sha256sum )"
echo $fileInfo
if [[ $strLength < $minResult ]]; then
sleep 10
timeStamp="Failed to get timestamp after $attemptCount tries, or wrong ID provided"
fi
done
#return the timestamp
echo $timeStamp
С оператором if в конце я пробовал использовать одинарные и двойные квадратные скобки, двойные кавычки вокруг переменных, -gt и <и даже вводить числовые значения 7 и 100, чтобы попытаться заставить этот раздел выполнить и это терпит неудачу. У меня есть утверждения if в других действующих скриптах, которые выглядят точно так же. Я схожу с ума. Что я не вижу не так? Помогите, пожалуйста. </p>