bash - 使用 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。我怎样才能解决这个问题?
解决方案
我认为错误在其他地方,即在下一行:
if [ ! -f "pgmname" ]
这应该是
if [ ! -f "$pgmname" ]
一旦解决了这个问题,我们就可以进一步讨论。
推荐阅读
- android - Wear OS 通知振动和声音
- node.js - 如何在 Node.js 中使用 Telegram 的 TDlib
- haskell - 根据 (maxBound :: Int) 的运行时值进行类型约束
- informatica - 在 Informatica 中工作时出现 FR_3085 错误
- c++ - 在 C++ 中自动生成方法
- xamarin - 如何使用计时器禁用 UIButton
- mysql - 尝试根据日期查找表的最大行时返回奇怪的值
- javascript - 确认框 OK/Cancel 功能
- java - 执行文件搜索后具有更新值的 JTable
- google-bigquery - Python 中或仅 JavaScript 中的 BigQuery UDF