【问题标题】:finding an absolute path from a supplied path in bash [duplicate]从bash中提供的路径中找到绝对路径[重复]
【发布时间】:2016-03-04 16:08:03
【问题描述】:

我正在尝试查找提供的相对路径的绝对路径,如果未提供则使用默认路径

原来我有OUTPUT_PATH=${OUTP:-"/home/default/output/dir"} 我可以 OUTPUT_PATH="$( cd "$(dirname ${OUTP})" && pwd)"获取绝对路径

但如果我将两者结合起来:

OUTPUT_PATH=${"$( cd "$(dirname ${OUTP})" && pwd)":-"/home/default/output/dir"}

我收到一个错误的替换错误,这是为什么呢?

【问题讨论】:

    标签: bash


    【解决方案1】:

    ${<i>varname</i>:-<i>default</i>} 表示法的意思是“替换名为 <i>varname</i> 的变量的值,如果它已设置且非空;否则,替换字符串 <i>default</i>”。

    在您的情况下,"$( cd "$(dirname ${OUTP})" &amp;&amp; pwd)" 不是变量的名称,因此${"$( cd "$(dirname ${OUTP})" &amp;&amp; pwd)":-"/home/default/output/dir"} 没有使用上述表示法;这只是胡言乱语。

    另外,dirname 电话对我来说没有意义;我认为您可能误解了该实用程序的作用。

    总的来说,我认为你想要的是:

    OUTPUT_PATH="$(cd "${OUTP:-/home/default/output/dir}" && pwd)"
    

    之后您还需要进行一些错误检查,以确保实际设置了 $OUTPUT_PATH(即,cd 能够移动到指定目录)。

    【讨论】:

    • 值得注意的是 bash 的 -L-P 选项用于 cd 命令。 “绝对路径”可能意味着几个不同的东西。哦,“只是胡言乱语”+1。 :-)
    猜你喜欢
    • 1970-01-01
    • 2022-06-10
    • 2019-04-10
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    相关资源
    最近更新 更多