linux for循环变量中有空格怎么处理

我有如下脚本,怎么把find命令获取到的文件赋值给for循环#!/bin/bashforiin`find.-name*.txt`doexportfile_path=$ie... 我有如下脚本,怎么把find命令获取到的文件赋值给for循环
#!/bin/bash

for i in `find . -name *.txt`
do
export file_path=$i
echo $file_path
done

文件路径如下,
/this is test dir/abc.txt
/this is test dir/a test/dsfd.txt

路径中带空格,所以输出就不对了。输出如下
./this
is
test
dir/abc.txt
./this
is
test
dir/a
test/dsfd.txt
展开
 我来答
不知详解
2016-08-28 · 知道合伙人软件行家
不知详解
知道合伙人软件行家
采纳数:609 获赞数:2254
自学计算机。

向TA提问 私信TA
展开全部
这个需要更改 shell分隔符为换行
for循环之前修改IFS变量
IFS=$'\n'

OLDIFS="$IFS"

for i in `find . `

do
echo "$i"
done
IFS="$OLDIFS"

这样循环就会以换行作为单词分界.你的文件名如果出现换行,那就无能为力。
虽然linux 支持文件名包含特殊字符
但并不推荐,会导致别的脚本出错误。通常用下划线或短线代替空格。

还有一种用
find some|while read i
do
echo "$i"
done
用read i,每个循环读取一行,等价与用换行作为分隔符。

记得采纳
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式