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”扩展为空字符串(因为尚未设置),然后 shell 从参数列表中删除该read单词它是空的并且没有被引用。这会导致您调用read未给出变量名称的形式,而将响应存储在$REPLY其中。

相关内容