我的 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"
将工作。