我试图遵循 如何在 Bash 中的“if”语句中比较两个字符串变量的答案?,但接受的解决方案不起作用。正如您从下面的脚本中看到的那样,我的语法遵循该问题的解决方案,这给了我在此处找到的错误 Bash syntax error: "[[: not found"。是的,我也尝试了他们的解决方案。
我有以下脚本,我试图从目录中删除所有数据。在我删除所有数据之前,我想将一个变量与一个标准输出值进行比较,以验证我是否拥有正确的目录。
为了避免从错误的目录中删除所有数据,我试图将脚本中的变量与存储在 *.ini.php 文件中的数据进行比较。
这是脚本:
#!/bin/bash
#--- script variables ---
#base path of the timetrex web folder ending with a / character
timetrex_path=/var/www/timetrex/
timetrex_cache=/tmp/timetrex/
#--- initialize script---
#location of the base path of the current version
ttrexVer_path=$(ls -d ${timetrex_path}*.*.*)/
#the timetrex cache folder
ttrexCache_path=$(sed -n 's/[cache]*dir =*\([^ ]*\)/\1/p' < ${ttrexVer_path}timetrex.ini.php)/
echo $timetrex_cache
echo $ttrexCache_path
#clear the timetrex cache
if [[ "$ttrexCache_path" = "$timetrex_cache" ]]
then
#path is valid, OK to do mass delete
#rm -R $ttrexCache_path*
echo "Success: TimeTrex cache has been cleared."
else
#path could be root - don't delete the whole server
echo "Error: TimeTrex cache was NOT cleared."
fi
脚本的输出显示如下:
/tmp/timetrex/
/tmp/timetrex/
Error: Timetrex cache was NOT cleared.
从输出中可以看出,这两个值是相同的。但是,当脚本比较这两个变量时,它认为它们是不同的值。
这是因为值是不同的类型吗?我在if 语句中使用了错误的比较运算符吗?提前致谢。