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?
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: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:Una vez realizados estos cambios, las variables deberían interpolar correctamente la ruta y la URL previstas.