所以,我想要做的是如果用户没有将路径作为参数传递给脚本,脚本将使用当前目录。如果传递路径,请改为使用它。
instdir="$(pwd)/"
if [ -n "$1" ] ; then
instdir="$1"
fi
cd $instdir
错误
./script.sh /path/to/a\ folder/
输出:cd: /path/to/a: File or folder not found
./script.sh "/path/to/a\ folder/"
输出:cd: /path/to/a\: File or folder not found
我在这里做错了什么?
答案 0 :(得分:2)
将cd $instdir
更改为cd "$instdir"
可以解决该特定问题。如果没有引号,a
的{{1}}和folder
部分将被视为单独的参数。
注意,不要使用设置a folder
的三行if
语句,而是写:
instdir
答案 1 :(得分:0)
如果传递带有空格的路径作为参数,则会导致问题。如果不是现在,那么将来。我建议你做以下事情(如果路径是唯一的参数):
instdir="$(pwd)"
if [[ -d "$@" ]]; then
instdir="$@"
fi
cd "$instdir"