内容如下:
1 字符串比较符
2 数字比较与计算符
3 特殊字符
整数比较
-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"))
> 大于(需要双括号),如:(("$a" > "$b"))
>= 大于等于(需要双括号),如:(("$a" >= "$b"))
字符串比较
= 等于,如: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" ]
注意:在[]结构中"<"需要被转义.
> 大于,在ASCII字母顺序下.如:
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ]
注意:在[]结构中">"需要被转义.
具体参考Example 26-11来查看这个操作符应用的例子.
-z 字符串为"null".就是长度为0.
-n 字符串不为"null"
注意:
使用-n在[]结构中测试必须要用""把变量引起来.使用一个未被""的字符串来使用! -z
或者就是未用""引用的字符串本身,放到[]结构中。虽然一般情况下可
以工作,但这是不安全的.习惯于使用""来测试字符串是一种好习惯.
awk '{print $2}' class.txt | grep '^[0-9.]' > res
SHELL下的数字比较及计算
比较:
方法一: if [ ${A} -lt ${B} ]; then ...
这是最基本的比较方法,使用lt(小于),gt(大于),le(小于等于),ge(大于等于),优点:还没发现;缺点:只能比较整数,使用lt,gt等不直观
方法二: if ((${A} < ${B})) then ...
这是CShell风格比较,优点:不用使用lt,gt等难记的字符串;缺点:还是只能比较整数
方法三: if (echo ${A} ${B} | awk '!($1>$2){exit 1}') then ...
这是使用awk比较,优点:可以比较小数;缺点:表达式太复杂,难记
方法四: if (echo ${A} - ${B} | bc -q | grep -q "^-"); then ...
这是使用bc计算比较,优点:可以比较小数;缺点:表达式更复杂,难记
计算:
方法一:typeset C=$(expr ${A} + ${B});
SHELL中的基本工具,优点:方便检测变量是否为数字;缺点:只能计算整数,且只能计算加减法,不能计算乘除法
方法二:let "C=${A}+${B}"; 或 let "C=A+B"
内嵌命令计算,优点:能计算乘除法及位运算等;缺点:只能计算整数
方法三:typeset C=$((A+B))
CShell风格的计算,优点:能计算乘除法及位运算等,简介,编写方便;缺点:不能计算小数
方法四:typeset C=${echo ${A} ${B} | awk '{print $1+$2}')
使用awk计算,优点:能计算小数,可以实现多种计算方式,计算灵活;缺点:表达式太复杂
方法五:typeset C=${echo ${A} + ${B} | bc -q)
使用awk计算,优点:能计算小数,计算方式比awk还多,计算灵活;缺点:表达式太复杂,小数点后面的位数必须使用scale=N来设置,否则可能会将结果截断为整数
特殊字符
符号 使用
; 一般情况我们输出完一个命令需要按一个回车,如果你想在一行执行多个命令,中间可以用;号分割 cd /home ; ls
* 表示任意字符(正则)
? 任一个字符
[abc] 列表项之一
[^abc] 对于列表取非 也可以使用范围 [a-z] [0-9] [A-Z](所有字符和数字)
{} 循环列表时用 touch_{1,2,3}时就会建立touch_1,touch_2,touch_3循环出这三个文件,也会用 echo ${ab}c
~ home目录cd ~ (普通通话进入的是/home目录下用户自己的家目录)
$ 提取变量值
`` $() 命令替换touch `date +%F_\`date +%T\`` touch $(date +%F_$(date +%T))
$[] 整数计算 echo $[2+3] - * / % 浮点数用 echo "scale=3; 10/3" | bc -l (bc用于计算的)
\ 转义后面的字符串 echo \\ 输出\ 转义特殊字符,为防止被SHELL解释bash中的特殊字符
"" '' 带空格串 将空格视为串的一部分 echo "abc xyz" echo 'abc xyz'
`` 命令替换 取命令的执行结果
$() 同上,但它弥补了``的嵌套缺陷
@ 无特殊含义
# 注释(一般编程都需要加注释,让其他团队队员对自己写的程序功能了解)
$ 变量取值
$() 命令替换
${} 变量名的范围
% 杀后台经常jobs号,取模运算(大家对取模应该并不陌生)
^ 取非 和 !雷同
& 用进程后台处理, &&用于逻辑与
* 匹配任意字符串;计算乘法
() 子进程执行
- 减号,区间,cd - 回到上层目录,杀掉当前jobs
_ (下划线)无特殊含义
+ 加号; 杀掉当前jobs(进程)
= 赋值
| 管道,|| 逻辑或
\ 转义 当一些特殊符号如$是一个变量需要转义才不被bash解析
{} 命令列表 {ls;cd /;}
[] 字符通配符,[]也是用于测试命令
: 空命令 真值
; 命令结束符
"" 软引 '' 硬引
< 输入重定向
> 输出重定向
>& 合并2和1输出
, 枚举分隔符
. 当前目录
/ 目录分隔符
? 单个字符
相关推荐
以下是对Shell常用操作符的详细解释: 1. **算术操作符**: - `+` 加法 - `-` 减法 - `*` 乘法 - `/` 除法(整数除法) - `%` 求余数 2. **关系操作符**: - `小于 - `>` 大于 - `>=` 大于或等于 - `小于...
以下是对`Shell`常用操作符的详细总结。 ### 一、算术操作符 算术操作符用于执行基本的数学运算: - `+`:加法 - `-`:减法 - `*`:乘法 - `/`:除法(注意:整数除法可能丢失小数部分) - `%`:取余数 例如: `...
### Shell常用命令整理 在日常的Linux系统管理与开发工作中,掌握一些基本的Shell命令是非常必要的。这些命令可以帮助我们高效地完成各种任务,比如文件管理、目录导航等。接下来,我们将详细介绍几个常用的Shell...
本资源提供了“Linux Shell常用技巧-带完整书签目录超清文字版.pdf”,这是一个详细介绍了各种Linux Shell操作技巧的文档,包含了完整的书签目录,方便用户快速定位和学习。以下是基于该文档可能涵盖的一些核心知识...
Linux 常用命令和操作系统命令概述 Linux 操作系统的基本命令是用户与操作系统内核之间的桥梁。Linux shell 是一种特殊的程序,它是用户与操作系统内核之间的桥梁。当用户登录成功,系统会启动一个交互式的 shell ...
3. **赋值操作符**:`=`, `+=`, `*=`, `/=`, `%=`等,用于给变量赋值或修改值。 4. **条件语句**:如`if`, `elif`, `else`,用于根据条件执行不同的代码块。 5. **循环结构**:包括`for`,`while`,`until`等,用于...
### Linux Shell 常用规则详解 #### 一、Shell 特殊字符引用与系统环境变量 在 Linux 系统中,Shell 是用户与操作系统之间的交互界面,它提供了丰富的功能来帮助用户执行命令、管理文件等操作。了解 Shell 的特殊...
Linux Shell是Linux操作系统...以上只是Linux Shell常用技巧的一部分,实际使用中还有更多高级特性和用法,如进程间通信、陷阱处理、正则表达式等。通过不断学习和实践,用户可以更好地掌握Shell,提升Linux操作效率。
文档中提到的60个Shell命令符涵盖了日常操作中最为常见的需求,下面将详细介绍其中的一些关键命令: ### 二、文件与目录管理命令 #### 2.1 `cd`(切换目录) - **命令格式**:`cd [目录路径]` - **功能**:用于...
在Linux操作系统中,Shell脚本是一种强大的自动化工具,它允许用户通过编写一系列命令来执行复杂的任务,从而提高工作效率。shell脚本是基于Shell语言(如bash、sh、csh等)编写的,这些语言是Linux命令行解释器的...
如果想要将文件重定向输出到另一个文件或追加内容,可以使用`>`或`>>`操作符。例如,`echo "some text" > file`会将文本写入文件,如果文件不存在则创建它,`echo "some text" >> file`则会在文件末尾追加文本。 ...
50+指令说明,shell脚本各操作符介绍、一些常用操作的指令、一些常见问题的解决方案
Shell脚本,全称为Bash Shell脚本,是Linux或Unix系统中的一种程序设计语言,它基于Shell命令行解释器,允许用户通过编写脚本来自动化一系列的系统操作。Shell脚本的编写对于日常的系统管理和自动化任务至关重要。...
本压缩包文件"常用shell示例脚本"提供了一系列从简单到复杂的脚本实例,帮助用户逐步理解和掌握Shell编程。 1. **Shell脚本基础** - **定义**:Shell脚本是由Shell解释器执行的一系列命令的集合,用户可以通过编写...
Linux 中的 shell 有多种类型,其中最常用的几种是 Bourne shell(sh)、C shell(csh)和 Korn shell(ksh)。三种 shell 各有优缺点。Bourne shell 是 UNIX 最初使用的 shell,并且在每种 UNIX 上都可以使用。...
1. **Bash (Bourne Again Shell)**:这是Linux中最常用的Shell类型,它符合POSIX标准并与Bourne Shell兼容,同时还提供了命令行编辑功能。Bash是由自由软件基金会的GNU项目开发的。 2. **C Shell (csh)**:由...
expr支持多种操作符,包括算术操作符、比较操作符、布尔/逻辑操作符以及操作符优先级,与C语言和Java的优先级相同。 要使Shell脚本可执行,可以使用chmod命令加上u+x选项来更改文件权限。运行Shell脚本时,如果脚本...