我在阅读以下参数时遇到问题:
我不明白使用此$(basename "$0")
来自何处的目的。
${BINARY%/*}
似乎试图获取目录的路径,但究竟为什么只需要这样。
DIR_NAME=$(dirname "$0")
FILE_NAME=$(basename "$0")
BINARY=`readlink ${ROOT_DIR}/${DIR_NAME}/${FILE_NAME} -f`
BIN_PATH=${BINARY%/*}
答案 0 :(得分:1)
$0
是正在运行的脚本的路径名。因此$(dirname "$0")
返回脚本目录,$(basename "$0")
是文件名。
${BINARY%/*}
在Shell Parameter Expansion
${parameter%word}
${parameter%%word}
扩展word
以生成与文件名扩展一样的模式。如果模式匹配扩展值parameter
的尾部部分,则扩展的结果是具有最短匹配模式('%'情况)或最长匹配模式的parameter
的值('%%'案例)已删除。
因此,这会找到与$BINARY
匹配的/*
的尾部,并将其删除,从而返回目录部分。它相当于$(dirname "$BINARY")