A variável está tomando valor como um arquivo em vez de um texto (String)

1

Eu estou tentando fazer um script bash em que eu manipulo um link de download com datas de entrada do usuário e tal para baixar o arquivo. Quando eu o executo, isso gera um erro   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

O segundo problema é que na parte inferior do código eu quero que o wget "vString" obtenha o valor atualizado (manipulado) da variável, mas está tomando o original por algum motivo. Qualquer conselho ajudará muito!

Código:

#!/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
    
por Dotol 05.05.2016 / 22:57

1 resposta

1

Substituições de parâmetro de shell como ${string/pattern/replacement} não modificam o valor original de string . Você precisa atribuir o resultado de cada substituição de volta à variável, por exemplo,

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

e assim por diante.

    
por steeldriver 06.05.2016 / 14:28