暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
Bash 编程易犯的错误大全.docx
38
19页
0次
2023-08-29
5墨值下载


写循环代码的时候,确实比较容易犯下面的错误:

错误

错误


错误

错误

错误

错误
 
错误
!"#$%
错误
这里主要两个问题:
使用命令展开时不带引号,其执行结果会使用
&'(
作为分隔符,拆分成参数传递给

循环
处理;
不应该让脚本去解析

命令的结果
")$
我们不能避免某些文件名中包含空格,
(
会对

展开的结会被做单词拆
*(+,"$
的处理。设有一个文件,名字为
-./
012(2

-33
./30
等等:

-
./
0

12
(2
这更差的
(
进一
"4$
比如

执行的结果中包含
号,按照通配符的规则
3
号会被展成当前目录下的所有文
5
67777777)7

)


)


)
不过,在这种场景下,你即使加上引号,也是无济于事的:
77
)
加上引号后,

执行的结果会被当成一个整体,所以

循环只会执行一次,达不到预期的
效果。
事实上,这种情况下,根本不需要使

命令。

命令的结果本身就设计成给人读的,
不是给脚本解析的。正确的处理方法是,直接使用文件名展开(通配符)的功能:

877
8



)
文件名展是位于各种展开(花括展开、变替换、命令展开等)功中的最后个环
节,所以会有之前不带引号的命展开的副用。如果你需要递归地理文件,以考
虑使用
'
命令
"9$
到这一步之间的问题看样子已经复了。但,如果你进一步思考,设当前目上没
有文件时会怎么样?没有文件的时候,

不会被展开直接传递给

循环处理,所以这
个时候循还是会执行一次。这种况不是我预期的行为。保险起见可以在循处理
的时候,检查下文件是否存在:
:;(&<

"77$==>6
77

如果你有使用引号
"?$
和避免单词拆分
"@$
的习惯,你完全可以避免很多错误。
注意下循环体内部的
77
,这里会导致下面我们要说的另外一个比较容易犯的错误。
),
of 19
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜