0

所以,我想要做的是,如果用户没有将路径作为参数传递给脚本,脚本将使用当前目录。如果通过了路径,请改用它。

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

我在这里做错了什么?

4

2 回答 2

2

更改cd $instdircd "$instdir"应该可以解决该特定问题。如果没有引号,a和的folder部分将a folder被视为单独的参数。

请注意,不要使用三行if语句来设置 set instdir,而是编写:

[ "$1" ] && instdir="$1"
于 2012-09-25T05:36:14.373 回答
0

如果您将带有空格的路径作为参数传递,则会导致问题。如果不是现在,那么在未来。我建议您执行以下操作(前提是路径是唯一的参数):

instdir="$(pwd)"

if [[ -d "$@" ]]; then
  instdir="$@"  
fi

cd "$instdir"
于 2012-09-25T05:40:03.400 回答