es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problema de interpolación en script de shell de bash.

Mi código actual es:

#! /bin/sh
yday=$(/usr/bin/date  --date="yesterday" +"%Y-%m-%d")
outfile='/var/www/api.example.com/seb/imports/'${yday}'.csv'
infile="https://example.com/export/vendors?lower_date=${yday}&higher_date=${yday}"
echo $outfile
echo $infile

La salida es:

/var/www/api.example.com/seb/imports/2022-01-06.csv
https://example.com/export/vendors?lower_date=2022-01-06&higher_date=2022-01-06

También he intentado lo siguiente:

outfile="/var/www/api.example.com/seb/imports/$yday.csv"

y

outfile='/var/www/api.example.com/seb/imports/'${yday}'.csv'

Estos generan:

.csv: no se encuentra
/var/www/apidev.example.com/seb/fetchcsv.sh: 3: /var/www/api.example.com/seb/imports/2022-01-06: No existe el archivo o el directorio

El uso previsto de las variables es en /usr/bin/wget -q -O $outfile $infile.

¿Cómo obtener correctamente la ruta y la URL previstas interpoladas en mis variables?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Hay un par de problemas con el código actual.

    En primer lugar, en la línea outfile='/var/www/api.example.com/seb/imports/'${yday}'.csv', las comillas alrededor de la ruta del archivo no son las comillas simples o dobles estándar. En su lugar, parecen ser códigos de entidad HTML para comillas simples. Esto puede estar causando problemas con la interpolación de la variable $yday. Para solucionarlo, reemplaza el código de entidad HTML por comillas simples estándar de esta manera:

    outfile='/var/www/api.example.com/seb/imports/'${yday}'.csv'
    

    En segundo lugar, en la línea infile="https://example.com/export/vendors?lower_date=${yday}&higher_date=${yday}", las comillas dobles nuevamente no son las comillas dobles estándar. Parecen ser códigos de entidad HTML. Reemplaza los códigos de entidad HTML por comillas dobles estándar de esta manera:

    infile="https://example.com/export/vendors?lower_date=${yday}&higher_date=${yday}"
    

    Una vez realizados estos cambios, las variables deberían interpolar correctamente la ruta y la URL previstas.

Comments are closed.