在我编写的脚本的一部分中,我将路径列表输出到临时文本文件中,以便稍后使用cd。我使用sed用'\'替换目录名中的空格,这样我也可以使脚本在目录名中使用空格。我的命令如下:
cat temp.txt | sed 's/ /\\ /g'
这具有用'\'替换空格的所需输出,但是当我稍后尝试cd时它忽略第二个单词并且说示例\不存在。任何想法如何解决这个问题?
如果您想查看它,我的整个脚本都在这里:http://pastebin.com/6jmnKDAd
这是在我添加sed之前的备份
答案 0 :(得分:3)
尝试将变量封闭在“”中,而不必转义空格。
cd "$mydir"
答案 1 :(得分:3)
为了补充Lorenzo的答案,如果你在文件中有一堆换行符分隔的路径名:
while IFS= read -r path; do
cd "$path"
do stuff
done < temp.txt
引用"$path"
来阻止shell word splitting
答案 2 :(得分:0)
您需要执行此操作而不是cat temp.txt | sed 's/ /\\ /g'
perl -F"/" -ane 'foreach (@F){if(/ /){$_="\"".$_."\"";}}print join "/",@F;' temp.txt
还要检查here
答案 3 :(得分:0)
是否需要使用临时文件,或者是否可以将目录存储在数组中:
dirs=()
dirs+=("/tmp/file A.txt")
dirs+=("/tmp/file B.txt")
for d in "${dirs[@]}"; do
cd "$d"
done
资源