首页 > 解决方案 > 使用 read 获取用户输入并稍后将其分配给变量会导致其丢失大小写

问题描述

假设我有一个目录 /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。我怎样才能解决这个问题?

标签: bashshellcapitalization

解决方案


我认为错误在其他地方,即在下一行:

if [ ! -f "pgmname" ]

这应该是

if [ ! -f "$pgmname" ]

一旦解决了这个问题,我们就可以进一步讨论。


推荐阅读