当变量试图在空格前添加“\”(路径包含空格)时,如何“cd $variable”?

当变量试图在空格前添加“\”(路径包含空格)时,如何“cd $variable”?

我的 bash 脚本注册了它自己的路径,因此它可以在执行cd某个地方的操作后返回到它自己的文件夹(有点像它探索不同的森林并能够重新安置它的房子)。

如果路径中有空格,我会在每个空格前sed添加。\

但是当使用cd $SCRIPTPATH这个变量时:

./newsed.sh: 11:cd:无法 cd 到 /media/daniell/B/bkp/ST500LM012\

来源:newsed.sh:

#!/bin/bash -e

tmp="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
SCRIPTPATH="$(echo "$tmp" | sed 's/ /\\ /g')"

echo "$SCRIPTPATH"

ls
cd
ls
cd $SCRIPTPATH
ls

echo $SCRIPTPATH生成一个正常路径 ( /media/daniell/B/bkp/ST500LM012\ HN-M500MBB\ Dat/0/ok/Pendrive/flshdrive/0.Floflis-DNA/layers/soil),我可以手动复制并 cd 到其中,并且可以工作;但是当cd直接对变量 ( cd $SCRIPTPATH) 进行操作时,它会在之后崩溃\

答案1

使用引号将变量引起来,以防止空格在 shell 中被视为分隔符,即

cd "$SCRIPTPATH"

将工作。

相关内容