首页 > 解决方案 > 如何在shell脚本的变量中存储有空格的文件名

问题描述

嗨,我有一个名为 MYFILES.txt 的文本文件

当我运行 grep --null ".txt" MYFILES.txt 它正确显示带有空格字符的文件名

grep --null ".txt" MYFILES.txt

my file 1.txt
my file 2.txt
my file 3.txt
my file 4.txt

但是在 shell 脚本中,如果我有这样的东西,那么空格字符将被排除:我需要将每个文件名存储在 FILE 变量中的文本中,并包含空格字符

for FILE in $( grep --null ".txt" MYFILES.txt)
do
   echo "${FILE}"
done

my
file
1.txt
my
file
2.txt
my
file
3.txt
my
file
4.txt

标签: linuxshellgrepsh

解决方案


如果文件名不包含换行符

grep .txt MYFILES.txt | while IFS= read -r file ; do
    echo "$file"
done

推荐阅读