Bash Script Não alterando o diretório

0

Eu tenho um pequeno script em que estou trabalhando, onde preciso ler em algumas Strings:

#!/bin/bash
echo "Enter SUID: "
read $uid
echo "Enter Tag Number: "
read $dicomTag

dicomDump() {
        arg1=$1
        cd ~/export/"$1"
        dcmdump *.dcm > dcmResults.txt
}
tagFinder() {
        arg1=$1
        arg2=$2
        for i in $(cat ~/export/"$1"/dcmResults.txt); do grep "$2" | >> tagResults.txt
        break
done;
}
dicomDump "$uid"
#tagFinder "$uid" "$dicomTag"

A primeira coisa que noto é que na função dicomDump (), ela não altera os diretórios. Quando eu coloquei ls no código que ainda estava no pwd , outra coisa que eu noto é que eu estou tentando usar o dcmdump (que é um link simbólico para um programa no meu servidor com * sendo um caractere curinga). Toda vez que eu corro o script eu recebo:

E: dcmdump: No such file or directory: reading file: *.dcm

Alguém pode me dizer por que o script não altera os diretórios como deveria e como posso executá-lo para executar o programa dcmdump?

    
por ryekayo 12.12.2014 / 20:24

1 resposta

3

Você está usando read errado.

echo "Enter SUID: "
read $uid
echo "Enter Tag Number: "
read $dicomTag

deve ser

echo "Enter SUID: "
read uid
echo "Enter Tag Number: "
read dicomTag

Como está, você está chamando read com o argumento "$ uid", que expande a variável "uid" para a string vazia (já que ela não foi definida), e então a shell solta a palavra da lista de argumentos para read , porque está vazio e não está entre aspas. Isso faz com que você chame o formulário de read , em que um nome de variável não é fornecido, e a resposta é armazenada em $REPLY .

    
por 12.12.2014 / 20:33