如何在bash中获取完全限定的目录

  • 本文关键字:bash 获取 bash shell unix
  • 更新时间 :
  • 英文 :


这是我的目录结构:

/rabbitProps/app/app/xyz

我需要编辑一个bash脚本。在bash脚本中,有一个名为BASEDIR的变量,其值为"0"/app/xyz";。我需要在脚本中将/rabbitProps的目录连接到一个名为CLASSPATH的变量,但不确定如何做到这一点。这是我在脚本中的if语句:

amqDirectory=${BASEDIR}/../rabbitProps/
echo $amqDirectory
echo $BASEDIR
if [ -d "$amqDirectory" ]; then
echo "--SETTING rabbitProps PROPERTIES"
echo "In the if statement for setting rabbitProps"
echo $amqDirectory
CLASSPATH="${CLASSPATH}:${amqDirectory}"
else
echo "--NOT SETTING AMQ PROPERTIES"
echo "In the else if statement for setting amq_properties"
echo $amqDirectory
fi
echo $BASEDIR
echo $CLASSPATH

但它一直在往另一个街区走。当我打印出amqDirectory变量时,它的值为/app/xyz/../rabbitProps/。。。这可能就是它不能满足if条件的原因。有人能纠正这个表达吗?我对bash不是很熟悉。

将线路amqDirectory=${BASEDIR}/../rabbitProps/更改为以下

amqDirectory=$(realpath "${BASEDIR}/../rabbitProps/")

实用程序realpath给出解析路径

如果实用程序不可用,你可以这样做

amqDirectory=$(cd "$BASEDIR/../rabbitProps/"; pwd)

此外,目录未更改为$BASEDIR//rabbitOps/在以$(..(的方式执行上述命令后,执行命令替换,并调用子shell执行命令

相关内容

  • 没有找到相关文章

最新更新