最近因为工作需要使用shell编写脚本。
shell的语法比较奇葩,经常因为没有空格给我报错。
下面,凡是有@的地方就代表一个空格
echo 'damn shell!'
fi
二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别整数比较
-eq 等于,如:if [ "$a" -eq "$b" ]
-ne 不等于,如:if [ "$a" -ne "$b" ]
-gt 大于,如:if [ "$a" -gt "$b" ]
-ge 大于等于,如:if [ "$a" -ge "$b" ]
-lt 小于,如:if [ "$a" -lt "$b" ]
-le 小于等于,如:if [ "$a" -le "$b" ]
大于(需要双括号),如:(("$a" > "$b"))
>= 大于等于(需要双括号),如:(("$a" >= "$b"))
小数据比较可使用AWK
字符串比较
= 等于,如:if [ "$a" = "$b" ]
== 等于,如:if [ "$a" == "$b" ],与=等价
注意:==的功能在[[]]和[]中的行为是不同的,如下:
1 [[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么将为true
2 [[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么结果为true
3
4 [ $a == z* ] # File globbing 和word splitting将会发生
5 [ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么结果为true
一点解释,关于File globbing是一种关于文件的速记法,比如"*.c"就是,再如~也是.
但是file globbing并不是严格的正则表达式,虽然绝大多数情况下结构比较像.
!= 不等于,如:if [ "$a" != "$b" ]
这个操作符将在[[]]结构中使用模式匹配.
大于,在ASCII字母顺序下.如:
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ]
注意:在[]结构中">"需要被转义.
具体参考Example 26-11来查看这个操作符应用的例子.
-z 字符串为"null".就是长度为0.
-n 字符串不为"null"
注意:
使用-n在[]结构中测试必须要用""把变量引起来.使用一个未被""的字符串来使用! -z
或者就是未用""引用的字符串本身,放到[]结构中。虽然一般情况下可
以工作,但这是不安全的.习惯于使用""来测试字符串是一种好习惯.
if判断式
if [ 条件判断一 ] && (||) [ 条件判断二 ]; then
elif [ 条件判断三 ] && (||) [ 条件判断四 ]; then
else
执行第三段內容程式
fi
例如:
if 使用的表达式
[ -a 文件 ] 如果文件存在为真。
[ -b 文件 ] 如果 文件 存在 而且 是一个 块-特殊 文件为真。
[ -c 文件 ] 为真 如果 文件 存在 而且 是一个 字-特殊 文件。
[ -e 文件 ] 为真 如果 文件 存在。
[ -f 文件 ] 为真 如果 文件 存在 而且 是一个 普通 文件。
[ -g 文件 ] 为真 如果 文件 存在 而且 已经设置了他的 SGID 位。
[ -h 文件 ] 为真 如果 文件 存在 而且 是一个 符号连接。
[ -k 文件 ] 为真 如果 文件 存在 而且 他的粘住位已经设置。
[ -p 文件 ] 为真 如果 文件 存在 而且 是一个 已经命名的管道 (F 如果O)。
[ -r 文件 ] 为真 如果 文件 存在 而且 是可读的。
[ -s 文件 ] 为真 如果 文件 存在 而且 比零字节大。
[ -t FD ] 为真 如果 文件 文件描述符已经打开 而且 指向一个终端。
[ -u 文件 ] 为真 如果 文件 存在 而且 已经设置了他的 SUID (set user ID)位。
[ -w 文件 ] 为真 如果 文件 为真 如果 文件 存在 而且 是可写的。
[ -x 文件 ] 为真 如果 文件 存在 而且 是可执行的。
[ -O 文件 ] 为真 如果 文件 存在 而且 属于有效用户ID。
[ -G 文件 ] 为真 如果 文件 存在 而且 属于有效组ID。
[ -L 文件 ] 为真 如果 文件 存在 而且 是一个 符号连接。
[ -N 文件 ] 为真 如果 文件 存在 而且 has been mod 如果ied since it was last read。
[ -S 文件 ] 为真 如果 文件 存在 而且 是一个 socket。
[ 文件1 -nt 文件2 ] 为真 如果 文件1 has been changed more recently than 文件2, or 如果
文件1 存在 而且
文件2 does not。
[ 文件1 -ot 文件2 ] 为真 如果 文件1 比 文件2 旧, 或者 文件2 存在而且 文件1 不存在。
[ 文件1 -ef 文件2 ] 为真 如果 文件1 而且 文件2 refer to the same device 而且 inode
numbers。
[ -o 选项名 ] 为真 如果 shell 选项 "选项名" 开启。
[ -z STRING ] 为真 如果 "STRING"的长度是零。
[ -n STRING ] 或者 [ STRING ] 为真 "STRING"的长度是非零值。
[ STRING1 == STRING2 ] 如果两个字符串相等为真。 "=" may be used instead of "==" for
strict POSIX compliance。
[ STRING1 != STRING2 ] 为真 如果 两两个字符串不相等。
[ STRING1 < STRING2 ] 为真 如果 "STRING1" sorts before "STRING2" lexicographically in the
current locale。
[ STRING1 > STRING2 ] 为真 如果 "STRING1" sorts after "STRING2" lexicographically in the
current locale。
[ ARG1 OP ARG2 ]
"OP" 是 -eq, -ne, -lt, -le, -gt or -ge 其中一个。 These arithmetic binary operators
return 为真 如果 "ARG1" is equal to, not equal to, less than, less than or equal to, greater
than, or greater than or equal to "ARG2", respectively。 "ARG1" 而且 "ARG2" are
integers。
表达式可以借以下操作符组合起来, listed in decreasing order of precedence:
操作符效果
[ ! EXPR ] 如果EXPR 为假则为真。
[ ( EXPR ) ] 返回EXPR 的值。 这样可以用来忽略正常的操作符优先级。
[ 表达式1 -o 表达式2 ] 如果表达式1 或者表达式2 其中之一为真则为真。
相关推荐
Linux下shell脚本中if语句使用的注意事项 在 Linux 中,shell 脚本中的 if 语句是非常重要的控制结构之一。正确地使用 if 语句可以使得我们的脚本更加灵活和强大。但是,如果不注意一些细节,if 语句可能会出错或不...
在 Linux Shell 编程中,if 语句可以使用文件比较运算符来判断文件或目录的状态。这些运算符包括: * -b:判断文件是否存在并且是块文件 * -c:判断文件是否存在并且是字符文件 * -d:判断 pathname 是否存在并且是...
### 在Linux Shell脚本中使用if语句的方法 #### 一、引言 在Linux环境中,Shell脚本是一种强大的工具,允许用户通过一系列命令来自动化任务处理。其中,`if`语句是控制流程中最基本也是最常用的结构之一。本文将...
在这个“linux shell程序设计实验1”中,我们将探讨如何利用基本的`case`和`if`语句来编写简单的Shell程序。 一、Shell程序基础 在Linux环境中,Shell是一个命令解释器,它接收用户输入的命令并执行。Bash是最常见...
下面将详细介绍Linux shell脚本中if语句的使用方法。 1. **if语句的基本格式** if语句的基本结构如下: ```bash if condition then command1 command2 ... else command3 command4 fi ``` 这里的`...
Linux Shell 编程基础是 Linux 操作系统中一个非常重要的组件,它提供了一个交互式命令行界面,允许用户输入命令来执行各种操作。在 Linux 系统中,Shell 是一个命令解释器,它可以解释用户输入的命令,并将其翻译...
Linux Shell是Linux操作系统中不可或缺的一部分,它是一种命令行接口,允许用户通过文本命令与系统进行交互。Shell脚本则是编写的一系列命令,可以自动化执行一系列任务,极大地提高了工作效率。在这个"Linux Shell...
Linux Shell脚本编程实例中,我们可以看到很多有用的控制结构,例如if语句、while语句、until语句等等。这些控制结构都是Linux Shell脚本编程的基础控制结构。 Linux Shell脚本编程实例中,我们可以看到很多有用...
在Linux shell编程中,`if`语句是用于条件判断的关键结构,它允许根据特定条件执行不同的代码块。本文将详细解析Linux中的`if`语句,并提供相关的使用示例。 `if`语句的基本语法如下: ```bash if condition then ...
6. 脚本选项处理:脚本中可能包含对用户通过命令行传入选项的处理逻辑,如使用case语句来响应不同的选项(case $choice in)。 7. 系统命令与管道:文档提到使用了多种系统命令,如cat、tr、sort、awk、grep等,...
1. 变量和环境变量是Shell脚本中存储信息的基本单元,它们可以在脚本中被赋予值,并在脚本执行过程中使用这些值。 2. 命令执行是脚本与系统交互的核心。在Shell脚本中可以执行各种系统命令,并可以使用特殊字符和...
3. Shell 控制结构:Shell 提供了多种控制结构,例如 if 语句、case 语句、循环语句等。例如 `if [ $a -gt 10 ]; then echo "a is greater than 10"; fi`。 二、自动化运维 1. Shell 脚本:Shell 脚本是一种自动化...
4.使用if条件语句编写MySQL备份脚本.mp4 5.Shell编程之LAMP一键安装脚本实战.mp4 6.For循环及实战批量远程命令脚本.mp4 7.While条件语句企业案例列表读取_0.mp4 8.Shell编程之Case语句及Select综合应用_0.mp4 9....
在“Linux Shell从初学到精通”中,你将学习如何使用重定向(>,>>)和管道(|)来操控输入和输出。重定向可以把命令的输出写入文件,而管道则可以将一个命令的输出作为另一个命令的输入,实现命令间的连接。 此外...
3. **流程控制结构**:Shell脚本支持条件语句(如`if`、`if-else`、`case`)和循环语句(如`for`、`while`、`until`)。这些控制结构使我们能够根据特定条件执行不同代码块,实现复杂的逻辑。 4. **函数与别名**:...
Linux Shell是Linux操作系统中的一种命令解释器,它允许用户与操作系统内核进行交互,执行各种命令和脚本。shell不仅是一个程序,同时也是一种强大的程序设计语言。在Linux中,有多种类型的shell,如ash、bash、ksh...
Shell脚本是Linux环境中的强大工具,尤其对于系统管理员和开发者而言,能有效提高工作效率。本资源提供的“Linux Shell脚本攻略源代码”是一份详细的学习材料,对于想要掌握或提升Shell脚本技能的人来说极具价值。 ...
Linux Shell脚本中的测试语句是编写自动化任务和系统管理脚本时不可或缺的一部分。它们允许我们检查各种条件,以确定是否执行特定的操作。在Shell中,有三种主要的测试语句形式:`test`、`\[` 和 `\[\[\]`。 1. `...
Shell脚本支持正则表达式用于字符串匹配和替换,如在find、grep等命令中使用。 八、脚本实例 通过实际案例,例如创建一个备份脚本、定时任务脚本或者日志分析脚本,来练习和理解Shell编程。 通过学习《LINUX与UNIX...