该脚本有一些硬编码的相对路径。我希望他们相对于剧本位置。如何在bash程序中正确地进行路径处理?
脚本需要更改当前目录,因为其他程序(cmake)需要它。
该脚本将一些(可能相对于调用者)路径作为参数,并将它们传递给该程序,它们应该被去激活。
问题是内联:
#!/bin/sh
# First arg should be Release or Debug
# TODO test for that.
if test -n "$1"; then # BTW how to test whether $1 is Debug or Release?
BUILD_TYPE="$1"
else
BUILD_TYPE="Release"
fi
# Set install prefix to current directory, unless second argument is given.
if test -n "$2"; then
INSTALL_PREFIX="$2" # How to derelativize this path argument?
else
INSTALL_PREFIX=bin # How to make this path relative to script location?
fi
# Make build directory and do cmake, make, make install.
mkdir -p build/${BUILD_TYPE} && # How to make this path relative to script location?
cd build/${BUILD_TYPE} &&
cmake -D CMAKE_BUILD_TYPE=${BUILD_TYPE} \
-D CMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \ # Possible relative to caller current directory.
../../ && # Relative to scrip position.
make -j4 &&
make install
它是一个普遍的问题还是我在一个非标准的方式做的事情?
我不要求你重制脚本,我只需要一个指导如何以正确的方式做到这一点。 – 2009-10-08 09:57:36