O script Bash não produz saída para o subdiretório [closed]

1

Eu tenho um script que executa vários comandos curl lendo um arquivo de entrada linha por linha (cada linha tem diferentes parâmetros de curva). Eu estou tentando tee o stnd out e stnd erro do comando curl para um arquivo de log, bem como exibi-los para o terminal. Simples, né?

Mas, por alguma razão, o tee não salvará a saída no subdiretório onde eu quero o arquivo de log. Ele criará o arquivo de log se eu especificar o diretório em que o script está sendo executado.

Abaixo está o código relevante:

if [[ -f $1 ]]
then
  echo "Running requests from $1"
  bname='basename ${1} | awk -F\. '{print $1}''
  mkdir ./output/${bname}
  echo "Will write output to ./output/${bname}"
while read line
    do
    let j=j+1
    post_data='perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "${line}"' 
    echo $line > ./output/${bname}/${bname}_${j}_request
    curl -v -b cookie ${SvrProperties} -d "xmlrequest=$post_data" -o ./output/${bname}/${2}_${j}_response.xml 2>&1 | tee /output/${bname}/${2}_${j}_Run.log &
  done < ${1}
elif [[ -d $1 ]]
then
  for file in 'ls $1'
  do
    echo "Running requests from $1/${file}"
    bname='basename ${file} | awk -F\. '{print $1}''
    mkdir ./output/${bname}
    echo "Will write output to ./output/${bname}"
    while read line
      do
      let i=i+1
      post_data='perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "${line}"' 
      echo $line > ./output/${bname}/${bname}_${i}_request
      curl -v -b cookie ${SvrProperties} -d "xmlrequest=$post_data" -o ./output/${bname}/${2}_${i}_response.xml 2>&1 | tee /output/${bname}/${2}_${i}_Run.log &
    done < ${1}/${file}
  done
else
  echo "Invalid input, neither file nor directory!  Exiting..."
  exit
fi

Nota: A linha em que faço eco da solicitação ao subdiretório, além de salvar a saída da solicitação de curl, todo o trabalho. É apenas o comando tee que não funciona.

Os arquivos de log serão criados se eu escrever algo assim:

curl -v -b cookie ${SvrProperties} -d "xmlrequest=$post_data" -o ./output/${bname}/${2}_${j}_response.xml 2>&1 | tee ${2}_${j}_Run.log & 

Mas não está no local que eu quero.

    
por phileas fogg 25.10.2011 / 01:19

1 resposta

2

Isso realmente diz

  curl -v -b cookie ${SvrProperties} -d "xmlrequest=$post_data" -o ./output/${bname}/${2}_${i}_response.xml 2>&1 | tee /output/${bname}/${2}_${i}_Run.log &

Se assim for, há um . em falta, deve ser tee ./output/[..] , certo?

    
por 25.10.2011 / 09:59

Tags