shell脚本,最后的$i怎么是0呢

码龄0.8年 2018-06-12 07:21:49
#!/bin/bash
i=0
find /usr/share/doc/ -type f -name "*.txt" | while read line
do
file $line | egrep -q "ASCII\ text"
[ "$?" -eq "0" ] && let i+=1 ; echo $(wc -l $line); echo $i
done
echo $i


1.最后的$i怎么是0呢
2.file $line 这里,带空格的文件名会报错,怎么解决呢,貌似shell的空格问题挺突出的
...全文
1580 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
码龄0.8年 2018-08-11
  • 打赏
  • 举报
回复
引用 2 楼 a905815661 的回复:
问题一:因为while语句放入管道后面会进入子shell,它会从父shell继承$i,但创建或修改的变量($i)不会影响到父shell中。http://www.cnblogs.com/f-ck-need-u/p/7431578.html
问题二:用引号保护变量,这是习惯。http://www.cnblogs.com/f-ck-need-u/p/7427357.html#blog1.4

我还是再学下shell吧
骏马金龙 2018-06-17
  • 打赏
  • 举报
回复
问题一:因为while语句放入管道后面会进入子shell,它会从父shell继承$i,但创建或修改的变量($i)不会影响到父shell中。http://www.cnblogs.com/f-ck-need-u/p/7431578.html 问题二:用引号保护变量,这是习惯。http://www.cnblogs.com/f-ck-need-u/p/7427357.html#blog1.4
  • 打赏
  • 举报
回复
引号包起来名字。

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧