Bash 스크립트는 디렉토리를 변경하지 않습니다

Bash 스크립트는 디렉토리를 변경하지 않습니다

일부 문자열을 읽어야 하는 작은 스크립트를 작성 중입니다.

#!/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"

가장 먼저 눈에 띄는 점은 dicomDump() 함수에서는 디렉터리를 변경하지 않는다는 것입니다. ls코드가 아직 남아 있는 동안 코드 에 접근했을 때 제가 알아차린 또 다른 점 pwd은 dcmdump(내 서버의 프로그램에 대한 심볼릭 링크, 여기서 *는 와일드카드)를 사용하려고 한다는 것입니다. 스크립트를 실행할 때마다 다음을 얻습니다.

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

스크립트가 디렉터리를 원래대로 변경하지 않는 이유와 dcmdump 프로그램을 실행하도록 하는 방법을 알려주실 수 있는 사람이 있습니까?

답변1

당신은 read그것을 잘못 사용했습니다.

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

~해야 한다

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

실제로 read변수 "uid"를 빈 문자열로 확장하는 "$uid" 인수를 사용하여 호출한 다음(아직 설정되지 않았기 때문에) 쉘은 해당 단어를 인수 목록에서 read그대로 제거합니다. 비어 있고 인용되지 않았습니다. 이로 인해 read변수 이름을 지정하지 않고 대신 응답을 저장하지 않고 양식을 호출하게 됩니다 $REPLY.

관련 정보