27

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

./program #relative
dir/dir2/program #relative
~User/dir/dir2/program #absolute
/home/User/dir/dir2/program #absolute

这是我的测试用例。我怎么能在 shell 程序中做这件事呢?

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

4

4 回答 4

30
if [[ "$0" = /* ]]
then
   : # Absolute path
else
   : # Relative path
fi
于 2012-07-09T22:06:51.707 回答
19

any 的通用解决方案$path,而不仅仅是$0

POSIX 一班轮

[ "$path" != "${path#/}" ] && echo "absolute" || echo "relative"
于 2016-08-15T01:40:52.357 回答
7
case "$directory" in
   /*)
      echo "absolute"
      ;;
   *)
      echo "relative"
      ;;
esac
于 2012-07-09T22:05:58.127 回答
-2
if [ ${path:0:1} == / ]
then
     echo Absolute path
else
     echo Non-absolute path
fi
于 2017-01-26T13:38:38.823 回答