我试图找到所提供的相对路径的绝对路径,如果没有提供默认路径,则使用默认路径
最初我有OUTPUT_PATH=${OUTP:-"/home/default/output/dir"}
我可以
OUTPUT_PATH="$( cd "$(dirname ${OUTP})" && pwd)"
获取绝对路径
但如果我将两者结合起来:
OUTPUT_PATH=${"$( cd "$(dirname ${OUTP})" && pwd)":-"/home/default/output/dir"}
我得到了一个糟糕的替换错误,为什么会这样?
答案 0 :(得分:3)
${varname:-default}
符号表示“替换名为varname
的变量的值,如果它已设置且非空;否则,替换字符串default
”。
在您的情况下,"$( cd "$(dirname ${OUTP})" && pwd)"
不是变量的名称,因此${"$( cd "$(dirname ${OUTP})" && pwd)":-"/home/default/output/dir"}
未使用上述表示法;这只是胡言乱语。
此外,dirname
电话对我没有意义;我想你可能误解了那个公用事业的作用。
总的来说,我认为你想要的是:
OUTPUT_PATH="$(cd "${OUTP:-/home/default/output/dir}" && pwd)"
之后您还需要进行一些错误检查,以确保$OUTPUT_PATH
实际设置(即cd
能够移动到指定目录)。