使用 read 获取用户输入并稍后将其分配给变量会导致它丢失大小写
Using read to get user input and assigning that to a variable later on causes it to lose its case
假设我有一个目录,/user/Jack/PROJECT1/tool1。
我正在尝试查看此目录是否存在于我的 shell 脚本中。
这是我正在处理的代码片段:
echo -e "Enter complete path: "
read verifydir
if [ ! -d $verifydir ]
then
echo -e $verifydir "is not a valid directory"
else
mydir=$verifydir
fi
exedir="$mydir/tool1"
pgmname=$exedir"/mytool.exe"
if [ ! -f "$pgmname" ]
then
echo -e $pgmname "not found."
exit -l
fi
我的问题是,虽然第一次检查(目录的存在)有效,但如果目录名全部大写(如 PROJECT1),第二次检查(对于 pgmname)找不到程序。它正在将 PROJECT1 转换为 project1。我该如何解决这个问题?
我认为错误在别处,即在下一行:
if [ ! -f "pgmname" ]
这应该是
if [ ! -f "$pgmname" ]
一旦解决了这个问题,我们就可以进一步讨论了。
您可以使用ls
if [[ $(ls $pgmname) ]]
请详细说明您的问题是什么
我解决了这个问题。之前在代码中,有人设置了 typeset -l pgmname .
谢谢。
假设我有一个目录,/user/Jack/PROJECT1/tool1。
我正在尝试查看此目录是否存在于我的 shell 脚本中。
这是我正在处理的代码片段:
echo -e "Enter complete path: "
read verifydir
if [ ! -d $verifydir ]
then
echo -e $verifydir "is not a valid directory"
else
mydir=$verifydir
fi
exedir="$mydir/tool1"
pgmname=$exedir"/mytool.exe"
if [ ! -f "$pgmname" ]
then
echo -e $pgmname "not found."
exit -l
fi
我的问题是,虽然第一次检查(目录的存在)有效,但如果目录名全部大写(如 PROJECT1),第二次检查(对于 pgmname)找不到程序。它正在将 PROJECT1 转换为 project1。我该如何解决这个问题?
我认为错误在别处,即在下一行:
if [ ! -f "pgmname" ]
这应该是
if [ ! -f "$pgmname" ]
一旦解决了这个问题,我们就可以进一步讨论了。
您可以使用ls
if [[ $(ls $pgmname) ]]
请详细说明您的问题是什么
我解决了这个问题。之前在代码中,有人设置了 typeset -l pgmname .
谢谢。