我的 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 数组:
#!/bin/bash
file_list= ( /tmp/filename_without_spaces '/tmp/filename with spaces' )
du -shc "${file_list[@]}"