bash 从右到左连接字符串
bash catenate strings right to left
我正在调试这个 catalina.sh 脚本,此时:
echo "$CATALINA_HOME"
echo "dot " .
echo "179"
if [ -r "$CATALINA_HOME"/bin/setclasspath.sh ]; then
echo "qui 81"
. "$CATALINA_HOME"/bin/setclasspath.sh
else
echo "185"
echo "Cannot find $CATALINA_HOME/bin/setclasspath.sh"
echo "This file is needed to run this program"
exit 1
fi
输出为:
/home/sysadm/2_KNOWAGE/Knowage_6-2_ARES/Knowage-Server-CE
dot .
179
185
/bin/setclasspath.shsadm/2_KNOWAGE/Knowage_6-2_ARES/Knowage-Server-CE
This file is needed to run this program
实际上 setclasspath.sh 存在时,具有写权限并且在它应该在的位置。所以我希望它被发现并且 运行.
问题几乎可以肯定与行尾有关。我强烈怀疑 CATALINA_HOME 正在拾取回车 return 字符,因为它已使用 Windows 行结尾保存。
通过 dos2unix
尝试 运行 脚本去除马车 returns。
您可能还想检查您的编辑器是否设置为使用 Unix 行尾而不是 Windows 行尾。
我正在调试这个 catalina.sh 脚本,此时:
echo "$CATALINA_HOME"
echo "dot " .
echo "179"
if [ -r "$CATALINA_HOME"/bin/setclasspath.sh ]; then
echo "qui 81"
. "$CATALINA_HOME"/bin/setclasspath.sh
else
echo "185"
echo "Cannot find $CATALINA_HOME/bin/setclasspath.sh"
echo "This file is needed to run this program"
exit 1
fi
输出为:
/home/sysadm/2_KNOWAGE/Knowage_6-2_ARES/Knowage-Server-CE
dot .
179
185
/bin/setclasspath.shsadm/2_KNOWAGE/Knowage_6-2_ARES/Knowage-Server-CE
This file is needed to run this program
实际上 setclasspath.sh 存在时,具有写权限并且在它应该在的位置。所以我希望它被发现并且 运行.
问题几乎可以肯定与行尾有关。我强烈怀疑 CATALINA_HOME 正在拾取回车 return 字符,因为它已使用 Windows 行结尾保存。
通过 dos2unix
尝试 运行 脚本去除马车 returns。
您可能还想检查您的编辑器是否设置为使用 Unix 行尾而不是 Windows 行尾。