(1) s1 = s2
(2) s1 != s2
(3) s1 < s2
(4) s1 > s2
(5) -n s1
(6) -z s1
(1) s1 匹配 s2
(2) s1 不匹配 s2
(3) __TO-DO__
(4) __TO-DO__
(5) s1 非空 (包含一个或多个字符)
(6) s1 为空
比较两个字符串。
#!/bin/bash
S1='string'
S2='String'
if [ $S1=$S2 ];
then
echo "S1('$S1') is not equal to S2('$S2')"
fi
if [ $S1=$S1 ];
then
echo "S1('$S1') is equal to S1('$S1')"
fi
我在此引用 Andreas Beck 发送的邮件中的一段注释,其中提到了使用 if [ $1 = $2 ]。
这不是一个好主意,因为如果 $S1 或 $S2 为空,您将收到解析错误。x$1=x$2 或 "$1"="$2" 更好。
+
-
*
/
% (求余数)
-lt (<)
-gt (>)
-le (<=)
-ge (>=)
-eq (==)
-ne (!=)
C 程序员应该简单地将运算符映射到其对应的括号。
本节由 Kees 重写(请参阅致谢...)
这些命令中的一些几乎包含完整的编程语言。对于这些命令,只会解释基础知识。要获得更详细的描述,请仔细查看每个命令的 man 页面。
sed (流编辑器)
Sed 是一个非交互式编辑器。您不是通过在屏幕上移动光标来更改文件,而是使用编辑指令脚本发送给 sed,以及要编辑的文件名。您也可以将 sed 描述为过滤器。让我们看一些例子
$sed 's/to_be_replaced/replaced/g' /tmp/dummy
Sed 将字符串 'to_be_replaced' 替换为字符串 'replaced',并从 /tmp/dummy 文件中读取。结果将发送到 stdout(通常是控制台),但您也可以在上面一行的末尾添加 '> capture',以便 sed 将输出发送到文件 'capture'。
$sed 12, 18d /tmp/dummy
Sed 显示除第 12 行到第 18 行之外的所有行。原始文件不会被此命令更改。
awk (数据文件操作、文本检索和处理)
AWK 编程语言存在许多实现(最著名的解释器是 GNU 的 gawk 和 'new awk' mawk)。原理很简单:AWK 扫描模式,并且对于每个匹配的模式,将执行一个动作。
再次,我创建了一个包含以下行的虚拟文件
"test123
test
tteesstt"
$awk '/test/ {print}' /tmp/dummy
test123
test
AWK 查找的模式是 'test',当它在文件 /tmp/dummy 中找到包含字符串 'test' 的行时,它执行的动作是 'print'。
$awk '/test/ {i=i+1} END {print i}' /tmp/dummy
3
当您搜索多个模式时,您应该将引号之间的文本替换为 '-f file.awk',以便您可以将所有模式和动作放在 'file.awk' 中。
grep (打印匹配搜索模式的行)
在前面的章节中,我们已经看到了一些 grep 命令,它们显示与模式匹配的行。但 grep 可以做更多的事情。
$grep "look for this" /var/log/messages -c
12
字符串 "look for this" 在文件 /var/log/messages 中找到了 12 次。
[好的,这个例子是假的,/var/log/messages 被修改过了 :-)]
wc (计数行数、字数和字节数)
在下面的示例中,我们看到输出不是我们期望的那样。本示例中使用的虚拟文件包含以下文本: "bash introduction howto test file"
$wc --words --lines --bytes /tmp/dummy
2 5 34 /tmp/dummy
Wc 不关心参数顺序。Wc 始终以标准顺序打印它们,正如您所看到的:.
sort (排序文本文件中的行)
这次虚拟文件包含以下文本
"b
c
a"
$sort /tmp/dummy
这就是输出的样子
a
b
c
命令不应该那么容易 :-) bc (计算器编程语言)
Bc 接受来自命令行的计算(来自文件的输入,而不是来自重定向器或管道),但也接受来自用户界面的计算。以下演示展示了一些命令。请注意
我使用 -q 参数启动 bc 以避免欢迎消息。
$bc -q
1 == 5
0
0.05 == 0.05
1
5 != 5
0
2 ^ 8
256
sqrt(9)
3
while (i != 9) {
i = i + 1;
print i
}
123456789
quit
tput (初始化终端或查询 terminfo 数据库)
tput 功能的小演示
$tput cup 10 4
提示符出现在 (y10,x4)。
$tput reset
清除屏幕,提示符出现在 (y1,x1)。请注意 (y0,x0) 是左上角。
$tput cols
80
显示 x 方向上可能的字符数。
强烈建议熟悉这些程序(至少)。有大量的小程序可以让您在命令行上实现真正的魔力。
[一些示例取自 man 页面或 FAQ]