27

タイトルで述べたように、パスが相対パスか絶対パスかによって、プログラムがいつ実行されるかを判断する必要があります。

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

これは私のテストケースです。シェルプログラムでこれを行うにはどうすればよいですか?

または、より一般的には、この場合、パス$0が相対か絶対かを確認する方法は?

4

4 に答える 4

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

$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 に答える