По какой-то причине этого кода создает проблемы:Вложенное if: слишком много аргументов?
source="/foo/bar/"
destination="/home/oni/"
if [ -d $source ]; then
echo "Source directory exists"
if [ -d $destination ]; then
echo "Destination directory exists"
rsync -raz --delete --ignore-existing --ignore-times --size-only --stats --progress $source $destination
chmod -R 0755 $destination
else
echo "Destination directory does not exists"
fi
else
echo "Source directory does not exists"
fi
It ошибку с:
Source directory exists
/usr/bin/copyfoo: line 7: [: too many arguments
Destination directory does not exists
Я использовал вложенный если заявления в Баше перед без проблем, чем простой ошибки я с видом?
Спасибо!
У меня была аналогичная проблема, и я не мог заставить if-инструкцию работать так, как должен использовать -z, -n или =. Решение моей проблемы было следующим: я использовал эхо и нашел, чтобы установить переменную. Я хотел посмотреть, нашел ли «находку» что-нибудь. Я повторил переменную и ничего не получил, поэтому предположил, что она пуста. Но затем я повторил длину строки, используя $ {# string_name}, и увидел, что она имеет длину 2. Значение содержало 2 символа пробела. Таким образом, я изменил, если проверить длину 2 (так как все мои правильные ответы будут длиннее). Вы также можете проверить наличие двух пробелов. Надеюсь, это поможет кому-то! – keyser