Intereting Posts

Сценарий 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 () он не меняет каталоги. Когда я застрял в коде, он все еще находился в pwd , еще одна вещь, которую я замечаю, это то, что я пытаюсь использовать dcmdump (который символически привязан к программе на моем сервере с *, являющейся подстановочным знаком). Каждый раз, когда я запускаю скрипт, я получаю:

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

Может ли кто-нибудь сказать мне, почему сценарий не меняет каталоги, как должен, и как я могу заставить его запустить программу dcmdump?

Вы 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 вместо этого.