1 votos

El comando con variables no funciona en el script bash

Estoy escribiendo un script rápido para transferir una página web desde un servidor remoto a mi máquina local. El problema es que recibo un error ": No existe dicho archivo o directorio" para mi carpeta local. Pero si no uso la variable y solo escribo el comando en el script, funciona. Funciona incluso si repito el comando y luego lo ejecuto en el terminal. Estoy agradecido por cualquier idea!

Este es el guión:

 #!/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
 

2voto

John1024 Puntos 7728

Porque tilde de expansión no funciona dentro de las comillas, estas dos líneas no hacen lo que esperamos:

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

Para habilitar la tilde de expansión, reemplazar con:

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

Pero, todavía hay otra cuestión: la tilde de expansión se produce en el local de la máquina con el local del directorio home de los usuarios. Si el usuario remoto tiene un nombre diferente y directorio home diferente, usted necesita para poner en forma explícita, tal vez algo como:

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

También, es una mala práctica para el uso de letras mayúsculas para los nombres de tus variables. El sistema utiliza todas las capitales de sus nombres y no desea sobrescribir accidentalmente. Es seguro utilizar minúscula o una mezcla de los nombres de los casos.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: