![]() |
1
816
关于 Advanced Bash Scripting Guide 说:
所以你得到了它 几乎 正确;你需要 双重的 括号,不是单括号。 关于第二个问题,您可以这样写:
哪个会回响
巴什的
|
![]() |
2
161
如果您使用的是最新的bash(v3+),我建议使用bash regex比较运算符
相配
注意-这是“正确”的正则表达式语法。
如果您不熟悉正则表达式语法,请尝试引用 this resource . 注意-如果你把每个新问题作为一个新问题来问,它会使stackoverflow更整洁,更有用。您可以始终包含一个指向上一个问题的链接,以供参考。 |
![]() |
3
95
我总是坚持使用posix sh而不是使用bash扩展,因为脚本的一个主要点是可移植性。(除此之外) 连接 程序,而不是替换它们) 在sh中,有一种简单的方法可以检查“is prefix”条件。
考虑到sh的古老、神秘和粗糙(而bash并不是解决方法:它更复杂、更不一致、更不可移植),我想指出一个非常好的功能方面:尽管一些语法元素
甚至更短
或
即使
较短(目前为止
如果您喜欢显式,请构建自己的语言元素:
这不是很好吗?
由于sh基本上只是作业和字符串列表(以及内部进程,其中的作业是由这些进程组成的),我们现在甚至可以进行一些简单的函数式编程:
这很优雅。我并不是提倡对任何严重的问题使用sh——它在现实世界中的需求上都会很快中断(没有lambda,所以必须使用字符串)。但不能使用字符串嵌套函数调用,不能使用管道…) |
![]() |
4
64
您可以只选择要检查的字符串部分:
对于后续问题,您可以使用 OR :
|
![]() |
5
54
我更喜欢已经发布的其他方法,但有些人喜欢使用:
编辑: 我已经在上面的案例陈述中添加了你的替代者 在编辑的版本中,括号太多。它应该是这样的:
|
![]() |
6
28
因为在bash中有意义,所以我得出了以下解决方案。
|
![]() |
7
26
虽然我在这里发现大多数答案都是正确的,但其中许多都包含不必要的害羞。 POSIX parameter expansion 为您提供所需的一切:
和
|
![]() |
8
8
@op,对于这两个问题,您都可以使用case/esac
第二个问题
或巴什4
|
![]() |
9
6
不起作用,因为 [ , [[ 和 测试 识别相同的非递归语法。见节 条件表达式 在你的bash主页上。 作为旁白,SUSV3说
你得这样写,但是 测试 不支持:
测试 使用 = 对于字符串相等,更重要的是它不支持模式匹配。
它还有一个额外的好处,即它不依赖于bash,语法是可移植的。从单个UNIX规范中,shell命令语言:
|
![]() |
10
6
在马克·拉沙科夫的最高级答案中增加了一点语法细节。 表达式
也可以写为
效果是一样的。只需确保通配符在引用文本之外。如果通配符是 里面 它将被逐字解释为引号(即,不是通配符)。 |
![]() |
11
-5
你能做的另一件事是
|
![]() |
Ben · 统计向量中的单词在字符串中出现的频率 7 月前 |
![]() |
bear_525 · 从列中删除中间名和首字母,并保存在单独的列中 9 月前 |
![]() |
asdfadf · 为什么具有相同内存值的字符串和整数打印方式不同? 9 月前 |
![]() |
user764754 · 防止多行原始字符串文字中出现新行字符 9 月前 |
![]() |
Bogaso · 从列表中返回与模式匹配的元素 9 月前 |
![]() |
Jasco · 如何使用VBA提取两个相似字符之间的字符串中的单词? 9 月前 |