1

Я пишу быстрый скрипт для переноса веб-страницы с удаленного сервера на мой локальный компьютер. Проблема в том, что я получаю ошибку «: Нет такого файла или каталога» для моей локальной папки. Но если я не использую переменную и просто набираю команду в скрипте, это работает. Это работает, даже если я повторяю команду, а затем просто запускаю ее в терминале. Я благодарен за любые идеи!

Это скрипт:

#!/bin/bash
WEBPAGE_NAME="wikiwebpageb"
USERNAME="banana"
IP="192.168.0.12"
PORT_NUMBER="4561"
WEB_BACKUP_DIR="~/backups/wiki_backups/webpage/"
LOCAL_WEB_BACKUP_DIR="~/backups/wiki_backups/webpage/"

LOGFILE=~/backups/backups.log

scp -P $PORT_NUMBER ${USERNAME}@${IP}:${WEB_BACKUP_DIR}1_${WEBPAGE_NAME}.tgz ${LOCAL_WEB_BACKUP_DIR}1_${WEBPAGE_NAME}.tgz 2>> $LOGFILE

1 ответ1

2

Поскольку расширение тильды не работает внутри кавычек, эти две строки не будут делать то, что вы надеетесь:

WEB_BACKUP_DIR="~/backups/wiki_backups/webpage/"
LOCAL_WEB_BACKUP_DIR="~/backups/wiki_backups/webpage/"

Чтобы включить расширение тильды, замените их на:

WEB_BACKUP_DIR=~/"backups/wiki_backups/webpage/"
LOCAL_WEB_BACKUP_DIR=~/"backups/wiki_backups/webpage/"

Но есть еще одна проблема: расширение тильды происходит на локальном компьютере с использованием домашнего каталога локальных пользователей. Если удаленный пользователь имеет другое имя и другой домашний каталог, вы должны указать это явно, возможно, что-то вроде:

WEB_BACKUP_DIR="/home/${USERNAME}/backups/wiki_backups/webpage/"
LOCAL_WEB_BACKUP_DIR=~/"backups/wiki_backups/webpage/"

Кроме того, использование имен заглавных букв в именах переменных является плохой практикой. Система использует все заглавные буквы для своих имен, и вы не хотите случайно перезаписать их. Безопасно использовать строчные или смешанные имена.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .