变量将值作为文件而不是文本(字符串)

变量将值作为文件而不是文本(字符串)

我正在尝试编写一个 bash 脚本,在其中操纵下载链接,用户输入日期等,然后下载文件。当我运行它时,它会抛出一个错误 Final.sh: Line 16: http://real-chart.finance.yahoo.com/table.csv?s=MSFT&a=02&b=13&c=1986&d=02&e=13&f=1986&g=@@d&ignore=.csv: No such file or directory

第二个问题是,在代码的底部,我希望wget "vString"获取变量的更新值(操作后的字符串),但出于某种原因,它获取的是原始值。任何建议都会很有帮助!

代码:

#!/bin/bash
while true; do
vString="http://real-chart.finance.yahoo.com/table.csv?s=MSFT&a=02&b=13&c=1986&d=02&e=13&f=1986&g=@@d&ignore=.csv"
read -p "Escriba el nombre de la empresa: " vEmpresa
read -p "Desea usar un rango de fechas? Y/N? " vRangoBoolean
read -p "Que  tipo de reporte es? " vTipo
if [ $vRangoBoolean == "Y" ]
then
read -p "Escribe el rango de fechas bajo el formato dd/mm/aa - dd/mm/aa:" vRango
elif [ $vRangoBoolean == "N" ]
then
read -p "Escriba el dia: " vDia
read -p "Escriba el mes: " vMes
read -p "Escriba el año: " vAno

${vString/@@d/$vTipo}
${vString/MSFT/$vEmpresa}
${vString/a=02/$vDia}

${vString/02/$vDia}
${vString/13/$vMes}
${vString/1986/$vAno}
${vString/08/$vDia}
${vString/13/$vMes}
${vString/1986/$vAno}
echo "La fecha del documento es: " "$vDia" de "$vMes" del "$vAno"
echo
wget "$vString"
fi
done

答案1

Shell 参数替换${string/pattern/replacement}不会修改 的原始值string。您需要将每次替换的结果赋值回变量,例如

vString="${vString/@@d/$vTipo}"
vString="${vString/13/$vMes}"
vString="${vString/1986/$vAno}"

等等。

相关内容