确定shell程序中的相对路径或绝对路径

Jor*_*dan 21 linux shell path

如标题中所述,如果路径是相对路径或绝对路径,我需要确定何时运行程序:

./program #relative
dir/dir2/program #relative
~User/dir/dir2/program #absolute
/home/User/dir/dir2/program #absolute
Run Code Online (Sandbox Code Playgroud)

这是我的测试用例.我怎样才能在shell程序中这样做呢?

或者更一般地说,如何检查路径,$0在这种情况下,是相对的还是绝对的?

Jir*_*ika 23

if [[ "$0" = /* ]]
then
   : # Absolute path
else
   : # Relative path
fi
Run Code Online (Sandbox Code Playgroud)


rye*_*nus 12

任何一般的解决方案$path,而不仅仅是$0

POSIX One Liner

[ "$path" != "${path#/}" ] && echo "absolute" || echo "relative"
Run Code Online (Sandbox Code Playgroud)


use*_*476 5

case "$directory" in
   /*)
      echo "absolute"
      ;;
   *)
      echo "relative"
      ;;
esac
Run Code Online (Sandbox Code Playgroud)