如何正确加上前缀和后缀双引号?

时间:2014-10-21 13:29:34

标签: linux shell batch-file

我的问题:由于路径中的空格,文件不会被删除。

我尝试做的事情:手动启动和结束路径前缀。它可以工作。但是,我无法以编程方式执行。

现有代码

su
destination_path="/mnt/sdcard/abc/cde/"
mkdir -p $destination_path
mv /mnt/sdcard/location.ini $destination_path
cd $destination_path
while read line
do
    path=/mnt/sdcard/$line/
    rm $path/*
done < location.ini

Location.ini 看起来像

DCIM/Camera/
abc/cde efg/hij/kl/mn op/

我在寻找什么: 用于确保删除Location.ini中提到的所有目录的代码。

详细信息: 在android控制台(shell)中运行

2 个答案:

答案 0 :(得分:0)

我实际上使用sed而不是双引号字符串:

su
destination_path="/mnt/sdcard/abc/cde/"
mkdir -p $destination_path
mv /mnt/sdcard/location.ini $destination_path
cd $destination_path
while read line
do
    path = `echo $line | sed s/\ /\\\\\ /`
    path = /mnt/sdcard/$path
    rm $path/*
done < location.ini

反引号强制执行代码,结果放在path变量中。

答案 1 :(得分:0)

要以编程方式执行此操作,请将$line括在引号中

path="/mnt/sdcard/$line"
rm="$path"/*

要测试一下,

$mkdir Test\ this
$cat input 
Test this
$while read line; do cd $line; done < input 
bash: cd: Test: No such file or directory
$while read line; do cd "$line"; done < input 
$pwd
/home/xxx/Test this