2016-09-19 34 views
1

我有一些路径保存在一个变量(变量名 - >测试)读变量

echo "${test}" 

结果:

/abc/pqr/filepath1 
/abc/pqr/lmn/file path2 
/abc/pqr/rst/filepath3 

我想逃避的“空间”字符在第二个路径,并获得每个路径的所有者,我使用以下命令:

stat -c '%U' ${test} , works for 1st and 3rd path. 

如何使这项工作为2 nd路径?提前致谢。

+1

你必须在一个变量一个字符串的所有路径?这似乎是它可能是一个更好的地方使用数组 –

+1

你如何获得'$测试'这些路径? – anubhava

回答

1

使用while结构得到每个文件名,每行一个:

while IFS= read -r f; do stat -c '%U' "$f"; done <<<"$test" 

例子:

$ echo "$test" 
/abc/pqr/filepath1 
/abc/pqr/lmn/file path2 
/abc/pqr/rst/filepath3 

$ while IFS= read -r f; do echo "$f"; done <<<"$test" 
/abc/pqr/filepath1 
/abc/pqr/lmn/file path2 
/abc/pqr/rst/filepath3 
+2

但名称是'file path2',而不是'filepath2'。 –

+0

@BenjaminW。但我不清楚,如果那样的话,那么它会更容易,不需要去除空间。编辑。 – heemayl

+1

很明显,OP的文件名中包含空格(他想逃避它们,而不是删除它们,以便调用'stat')。 – chepner