Shell脚本反斜杠和空格参数

时间:2012-09-25 05:31:56

标签: bash shell ubuntu

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

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

我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

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

注意,不要使用设置a folder的三行if语句,而是写:

instdir

答案 1 :(得分:0)

如果传递带有空格的路径作为参数,则会导致问题。如果不是现在,那么将来。我建议你做以下事情(如果路径是唯一的参数):

instdir="$(pwd)"

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

cd "$instdir"