bash - 将命令放在单引号中是否对 bash 脚本有任何影响?
问题描述
我偶然发现了一个脚本,作者将每个外部命令(不是内置命令或函数)都放在单引号中。由于我以前从未见过这种编码风格,所以我想知道以下两个示例之间有什么区别:
'cat' $myfile
对比
cat $myfile
请忽略作者选择不引用保存文件名的变量这一事实。我肯定会把它放在双引号中,并且我知道引号对变量的影响。我只是对命令周围的引号是否有任何影响感兴趣。这两个示例都可以正常工作,但我的理解是单引号在这里是多余的。那是对的吗?
谢谢!
解决方案
是的,它有效果,但主要是出于一个非常神秘的原因:
考虑一下这个奇怪的结构
alias cat='echo x'
cat foo # would output x foo
'cat' foo # Would output the content of the file foo
将其放在引号内会导致 bash 不运行别名。也可以通过
command cat foo # Also outputs the file foo
不同之处在于,将命令放在引号中只会跳过别名定义,而 usingcommand
也会跳过函数定义。由于脚本中通常不启用别名,因此很少使用引号。
推荐阅读
- pyspark - Azure 数据块中的自定义 Spark 日志位置配置
- python - 从 Python 代码调用 pytest 时可以共享全局变量吗
- python - 在给定列表中找到第二大的数字[重复]
- python - 如何在ubuntu上更改jupyter笔记本“下载为”路径
- python - 在python中将字节数组写入文件时出错
- excel - 根据条件返回列中的值使用 Ifs 或 Hlookup、Vlookup
- r - 使用 ldatuning 包时,Mac 上的 R 出现致命错误
- ios - layer.render(in: context) 在 swiftUI 中没有被调用
- java - 如何将多个 OpenTelemetry 跟踪合并为一个原始跟踪?
- python - 如何使用熊猫获得金额的基数?