`
阿尔萨斯
  • 浏览: 4622298 次
社区版块
存档分类
最新评论

《Linux命令行与shell脚本编程大全》 第十一章 学习笔记

 
阅读更多

第十一章:使用结构化命令

使用if-then语句

if command
then
    commands
fi

如果if后面的命令退出状态码=0,那么就执行then

另外一种形式

if command; then
    commands
fi

if-then-else语句

if command
then
    commands
else
    commands
fi

如果if后面的命令退出状态码=0,那么就执行then,否则,执行else

嵌套if(else if)

if command1
then
    commands
elif command2
then
    commands
fi

test命令

test命令可以判断3类条件

1.数值比较

2.字符串比较

3.文件比较

格式:

test condition

在if语句中,可以使用方括号[]

if test condition
then
    commands
fi

或者

if [ command ]
then
    commands
fi

注意:方括号两边必须加入一个空格,不然会报错

数值比较

比较 描述
n1 -eq n2

检查n1是否与n2相等

n1 -ge n2 检查n1是否大于或等于n2
n1 -gt n2 检查n1是否大于n2
n1 -le n2 检查n1是否下雨或等于n2
n1 -lt n2 检查n1是否小于n2
n1 -ne n2 检查n1是否不等于n2

可以用在变量上

注意:不能使用浮点数

字符串比较

比较 描述
str1 = str2 检查str1是否和str2相同
str1 != str2 检查str1是否和str2不同
str1 < str2 检查str1是否比str2小
str1 > str2 检查str1是否比str2大
-n str1 检查str1的长度是否非0
-z str1 检查str1的长度是否为0

顺序比较需要注意:

1.大于小于符号要转义,不然会被识别为重定向符号

2.test命令根据ASCII顺序排序,与sort命令不同

字符串长度

当变量为空字符串或者没有初始化时,变成长度是0

空字符串或没有初始化的变量可能会对程序有灾难性影响,使用前最好先使用test命令中的-n和-z确认

文件比较

比较 描述
-d file 检查file是否存在并且是否是一个目录
-e file 检查file是否存在
-f file 检查file是否存在并且是否是一个文件
-r file 检查file是否存在并可读
-s 检查file是否存在并非空
-w 检查file是否存在并可写
-x 检查file是否存在并可执行
-O 检查file是否存在并属于当前用户所有
-G 检查file是否存在并且默认组与当前用户相同

file1 -nt file2

检查file1是否比file2新
file1 -ot file2 检查file1是否比file2旧

以检查目录为例:

if [ -d $HOME ]
then
    cd $HOME
else
    echo "$HOME is not a directory"
fi

复合条件测试

[ condition1 ] || [ condition2 ]

[ condition1 ] && [ condition2 ]

if-then的高级特性

1.用于数学表达式的双圆括号

2.用于高级字符串处理的双方括号

双圆括号允许将高级数学表达式放入比较中

格式:

(( expression ))

命令符号

符号 描述
val++ 后增
val-- 后减
++val 先增
--val 先减
! 逻辑求反
~ 位求反
** 幂运算
<< 左位移
>> 右位移
& 位布尔和
| 位布尔或
&& 逻辑和
|| 逻辑或

双方括号格式

[[ expression ]]

提供了模式匹配(pattern matching)特性,可以在其中使用正则表达式

if [ $USER == r* ]

case命令

命令格式:

case variable in
pattern1 | pattern2) commands1;;
pattern3) commands2;;
*) default commands;;
esac

bash中是可以在case中检查字符串的

从java到bash,语法转变还是很大的,不过思想是不会变的

下面是一个简单的示例:

case $test in
pork | beef | lamb )
    echo "$test is meat!"
    echo "I like it!";;
potato | tomato | eggplant )
    echo "$test is a vegetable"
    echo "who likes it?";;
*)
    echo "what's this?";;
esac

在java7之前,这么写是不可以的,switch case中不支持string类型

转贴请保留以下链接

本人blog地址

http://su1216.iteye.com/

http://blog.csdn.net/su1216/

分享到:
评论

相关推荐

    unix shell编程第三版笔记

    "Unix Shell编程第三版笔记"是铁道出版社出版的一本教材,它深入浅出地讲解了Unix Shell编程的基础和高级技巧。这份笔记涵盖了从基本的命令行操作到复杂的脚本编写,帮助学习者掌握这一强大的自动化工具。 Unix ...

    总结搜集的shell脚本学习笔记(完结篇).pdf

    ### Shell脚本编程知识点概述 #### 一、预备知识与基本概念 在开始Shell脚本文档的学习之前,首先需要理解Shell脚本的基本概念及其在Linux/Unix环境中的作用。Shell是一种命令行解释器,用于执行用户输入的命令,...

    尚观linux 学习笔记 1

    【尚观Linux学习笔记1】是一份全面介绍Linux操作系统的学习资料,涵盖了从基础到进阶的各类主题。这些笔记特别适合主机开发和嵌入式开发的学习者,旨在提供一个月的系统学习路径,帮助读者深入理解并掌握Linux的核心...

    Linux学习笔记.pdf,linux详解,LINUX

    八、shell脚本编程 编写shell脚本可以自动化重复任务,例如: - 变量、运算符和条件判断。 - 函数定义。 - 循环结构。 - 输入输出重定向。 九、系统管理 - sysctl:调整系统内核参数。 - logrotate:日志文件轮换。...

    2.蛤蟆PYTHON脚本学习笔记二基本命令畅玩.rar

    "蛤蟆PYTHON脚本学习笔记二基本命令畅玩"这个压缩包文件,显然是一个关于Python编程初学者的学习资料,旨在帮助读者掌握Python的基础命令。在这个笔记中,我们可以期待涵盖以下关键知识点: 1. **Python安装**:...

    嵌入式Linux 入门笔记Linux.pdf

    #### 第一阶段:在PC机上学习熟练Linux **1. RedHat Linux 9 下的常用操作** - **命令行基础**:掌握基本的Linux命令如`ls`, `cd`, `mkdir`, `rm`, `cp`, `mv`, `grep`, `find`, `tar`, `gunzip`等。 - **文本编辑...

    Linux运维趋势_第03期_运维与开发

    - **深入理解**:学习Shell脚本编程,理解Linux内核工作原理。 - **实践操作**:通过搭建自己的Linux环境进行实战练习。 - **持续跟进**:关注最新的Linux技术动态和发展趋势。 - **参与社区**:加入Linux相关的论坛...

    第11章 Linux操作系统基础-教程与笔记习题

    以下是对"第11章 Linux操作系统基础"的主要知识点的详细阐述。 一、Linux操作系统简介 Linux是基于Unix的操作系统,由林纳斯·托瓦兹于1991年创建。它的内核是开源的,允许全球开发者对其进行修改和优化。Linux系统...

    Python笔记.zip

    以下是一份可能的Python编程学习笔记概述: 1. **Python简介**: Python是一种高级、解释型、交互式和面向对象的脚本语言。它以其简洁、易读的语法而闻名,是初学者入门编程的理想选择。 2. **安装与环境配置**:...

    Redhat系统管理员笔记

    - **变量与参数(Variable & Parameter)**:讲解如何在Shell脚本中定义和使用变量。 - **变量替换(Variable Substitution)**:介绍如何使用变量替换功能。 - **正则表达式(Regular Expression)**:探讨Shell脚本中正...

    comp2101

    标题“comp2101”很可能指的是一个计算机科学课程,可能是关于编程或系统管理的,具体是第二百一十一年的课程。描述中提到的“200448165的comp2101存储库”可能是指一个学生的个人学习仓库,这个学生在学习过程中...

    soal-shift-sisop-modul-1-A12-2021:回购github soal shift modul 1 sisop semester genap tahun 2021

    标签 "Shell" 提示我们这份材料可能与Shell脚本编程有关。Shell是Unix和Linux操作系统上的命令行解释器,它允许用户通过文本命令来执行各种系统操作。学习Shell脚本可以提升用户对操作系统交互的效率,编写自动化...

Global site tag (gtag.js) - Google Analytics