不要理解bash参数声明

时间:2016-01-28 03:17:08

标签: linux command

我在阅读以下参数时遇到问题:

  1. 我不明白使用此$(basename "$0")来自何处的目的。

  2. ${BINARY%/*}似乎试图获取目录的路径,但究竟为什么只需要这样。

  3. DIR_NAME=$(dirname "$0")
    FILE_NAME=$(basename "$0")
    BINARY=`readlink ${ROOT_DIR}/${DIR_NAME}/${FILE_NAME} -f`
    BIN_PATH=${BINARY%/*}
    

1 个答案:

答案 0 :(得分:1)

  1. $0是正在运行的脚本的路径名。因此$(dirname "$0")返回脚本目录,$(basename "$0")是文件名。

  2. ${BINARY%/*}Shell Parameter Expansion

  3. 中有解释
      

    ${parameter%word}
      ${parameter%%word}
      扩展word以生成与文件名扩展一样的模式。如果模式匹配扩展值parameter的尾部部分,则扩展的结果是具有最短匹配模式('%'情况)或最长匹配模式的parameter的值('%%'案例)已删除。

    因此,这会找到与$BINARY匹配的/*的尾部,并将其删除,从而返回目录部分。它相当于$(dirname "$BINARY")