如何使用变量中带空格的文件名列表将变量的内容作为参数传递给 du?

问题描述 投票:0回答:1

我的 bash 脚本中有一个变量文件名列表。 我需要总结列出的文件的磁盘使用情况。 但我不知道如何转义文件名中的空格。 我尝试了各种选择,但没有一个有效。

这是我的测试脚本:

#!/bin/bash

FILE_LIST="/tmp/filename_without_spaces
           /tmp/filename\ with\ spaces"

du -shc $FILE_LIST

FILE_LIST="/tmp/filename_without_spaces
           /tmp/filename\\ with\\ spaces"

du -shc $FILE_LIST

FILE_LIST="/tmp/filename_without_spaces
           \"/tmp/filename with spaces\""

du -shc $FILE_LIST

以及我得到的脚本输出:

1,0G    /tmp/filename_without_spaces
du: cannot access '/tmp/filename\': No such file or directory
du: cannot access 'with\': No such file or directory
du: cannot access 'spaces': No such file or directory
1,0G    total
1,0G    /tmp/filename_without_spaces
du: cannot access '/tmp/filename\': No such file or directory
du: cannot access 'with\': No such file or directory
du: cannot access 'spaces': No such file or directory
1,0G    total
1,0G    /tmp/filename_without_spaces
du: cannot access '"/tmp/filename': No such file or directory
du: cannot access 'with': No such file or directory
du: cannot access 'spaces"': No such file or directory
1,0G    total

du 无法处理名称带有空格的文件。

bash filenames space du
1个回答
0
投票

使用 bash 数组:

#!/bin/bash

file_list= ( /tmp/filename_without_spaces '/tmp/filename with spaces' )    
du -shc "${file_list[@]}"
© www.soinside.com 2019 - 2024. All rights reserved.