从bash中提供的路径查找绝对路径
我试图找到提供的相对路径的绝对路径,如果没有提供,则使用默认路径 最初我有从bash中提供的路径查找绝对路径,bash,Bash,我试图找到提供的相对路径的绝对路径,如果没有提供,则使用默认路径 最初我有OUTPUT\u PATH=${OUTP:-“/home/default/OUTPUT/dir”} 我能行 OUTPUT_PATH=“$(cd“$(dirname${OUTP})”&&pwd)”获取绝对路径 但如果我将两者结合起来: OUTPUT_PATH=${"$( cd "$(dirname ${OUTP})" && pwd)":-"/home/default/output/dir"} 我的换人失误很
OUTPUT\u PATH=${OUTP:-“/home/default/OUTPUT/dir”}
我能行
OUTPUT_PATH=“$(cd“$(dirname${OUTP})”&&pwd)”
获取绝对路径
但如果我将两者结合起来:
OUTPUT_PATH=${"$( cd "$(dirname ${OUTP})" && pwd)":-"/home/default/output/dir"}
我的换人失误很严重,为什么 表示法${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\u PATH
(即cd
能够移动到指定目录)。值得注意的是bash的-L
和-p
选项用于cd
命令。“绝对路径”可能意味着两种不同的东西。哦,还有+1表示“胡言乱语”。-)