shell编程之一基础

大纲

一、编程语言分类

二、shell分类

三、变量相关概念

四、bash变量类型

五、逻辑运算

六、算术运算

七、bash条件测试类型及测试方法

八、命令的执行结果与执行状态返回值区别

一、编程语言分类

  • 距离人的远近分类:机器语言、汇编语言、高级语言
  • 执行时是否需要预先转换:编译型语言、解释性语言
  • 编程风格分类:面向对象、面向过程
  • 变量使用时是否需要预先声明:强类型语言、弱类型语言

二、shell分类及bash概念

  • GUI:Gnome、KDE、Xfce
  • CLI:sh、bash、csh、ksh、tcsh、zsh

三、变量相关概念

  • 变量定义:命名的一段内存空间
  • 赋值过程定义:保存数据到这段内存空间的过程就叫做赋值
  • 声明变量类型的作用:定义变量的存储格式、存储空间大小及支持的运算
  • 变量类型:数值型、字符型、布尔型、日期时间型

四、bash变量类型

1.本地变量:只对当前shell进程有效,对其子shell以及其它shell都无效

[[email protected] test]# A=‘jerry‘         # 定义一个本地变量A

2.局部变量:仅对局部代码生效(且只能在函数中定义)

[[email protected] test]# local  B=‘tom‘    # 命令行不能定义局部变量
-bash: local: can only be used in a function

3.环境变量:对当shell进程及其子shell有效

[[email protected] test]# export C=‘natash‘# 定义环境变量C
[[email protected] test]# echo $C
natash
[[email protected] test]# bash                # 重新打开一个子shell
[[email protected] test]# echo $C       # 之前定义的环境变量在子shell中依然有效,但是重新登陆就没效了
natash

4.位置变量$[1-10]

 $1              # 表示向脚本传递的第一个参数  
 $2              # 表示向脚本传递的第二个参数

5.特殊变量

$0:脚本名称自身
$#:传递到脚本的参数个数
$?:上一条命令的执行状态返回值,0代表成功
$$:脚本运行的当前shell进程的id号
$!:后台运行的最后一个进程的进程ID号
$*:以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个
[email protected]: 与$*相同,但是使用时加引号,并在引号中返回每个参数

五、逻辑运算

1.逻辑与:&&

[[email protected] scripts]# id user2 &> /dev/null && userdel -r user2 && echo "Delete user2 finished."
Delete user2 finished.  # 前面为真,后面就执行;前面为假,后面就不用执行;如果...就...

2.逻辑或:||

[[email protected] scripts]# id user2 &> /dev/null || echo "user2 not exists."
user2 not exists.        # 前面为真,后面就不用执行;前面为假,后面就要执行;如果...否则...

3.逻辑非:!

[[email protected] scripts]# ! id user2 &> /dev/null && echo "user2 not exists."
user2 not exists.        # 前面为真,取反之后就为假;前面为假,取反之后就为真;如果不...就...

六、算术运算

1.let算术运算表达式

[[email protected] scripts]# A=3
[[email protected] scripts]# B=5
[[email protected] scripts]# let C=$A+$B;echo $C
8

2.$[算术运算表达式]

[[email protected] scripts]# A=3
[[email protected] scripts]# B=5
[[email protected] scripts]# D=$[$A+$B];echo $D
8

3.$((算术运算表达式))

[[email protected] scripts]# A=3
[[email protected] scripts]# B=5
[[email protected] scripts]# E=$(($A+$B));echo $E
8

4.`expr 算术运算表达式`,表达式中各操作数及运算符之间要有空格,而且要使用命令引用

[[email protected] scripts]# A=3
[[email protected] scripts]# B=5
[[email protected] scripts]# F=`expr $A + $B`;echo $F
8

七、bash条件测试类型及测试方法

1.整数测试

    -gt:测试是否大于,大于为真,反之为假
    -lt:测试是否小于,小于为真,反之为假
    -ge:测试是否大于等于,大于等于为真,反之为假
    -le:测试是否是否小于等于,小于等于为真,反之为假
    -eq:测试是否等于,等于为真,反之为假
    -ne:测试是否不等,不等为真,反之为假

2.文件测试

    -e FILE:测试文件是否存在;存在为真,否则为假 
    -f FILE: 测试文件是否为普通文件;是文件为真,否则为假
    -d FILE: 测试指定路径是否为目录;是目录为真,否则为假
    -r FILE: 测试当前用户对指定文件是否有读取权限;可读为真,否则为假
    -w:测试当前用户对指定文件是否有写权限;可写为真,否则为假
    -x:测试当前用户对指定文件是否有执行权限;可执行为真,否则为假

3.字符测试

    ==:测试是否相等,相等为真,不等为假    
    !=: 测试是否不等,不等为真,等为假
    -n string: 测试指定字符串是否不空,不空为真,空则为假
    -z string: 测试指定字符串是否为空,空为真,不空则为假

4.测试方法

(1).[ expression ]

[[email protected] scripts]# [ 3 -gt 2 ] && echo "3>2"
3>2

(2).[[ expression ]]

[[email protected] scripts]# [[ 3 -gt 2 ]] && echo "3>2"
3>2

(3).test expression

[[email protected] scripts]# test 3 -gt 2 && echo "3>2"
3>2

5.组合测试条件

(1).逻辑与

[[email protected] scripts]# [ 3 -gt 2 -a 3 -lt 5 ] && echo "2<3<5"
2<3<5

(2).逻辑或

[[email protected] scripts]# [ 3 -gt 2 -o 3 -gt 5 ] && echo "2<3<5"
2<3<5

(3).逻辑非

[[email protected] scripts]# [ ! 3 -gt 5 ] && echo "3<5"
3<5

八、命令的执行结果与执行状态返回值

[[email protected] scripts]# ls /home/
user4  user8                # 这是命令的执行结果
[[email protected] scripts]# echo $?
0                            # 这是命令的执行状态返回值,0为成功,1-255都为不成功
时间: 2024-10-12 19:53:20

shell编程之一基础的相关文章

Linux学习笔记(17) Shell编程之基础

1. 正则表达式 (1) 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式:通配符用来匹配符合条件的文件名,通配符是完全匹配.ls.find.cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了. (2) 基础正则表达式 元字符 作用 * 前一个字符匹配0次或任意多次 . 匹配除了换行符外任意一个字符 ^ 匹配行首,如:^hello会匹配以hello开头的行 $ 匹配行尾,如:hello$会匹配以hello结尾的

Shell编程(基础)

背景什么是shell编程 高大上的解释,往往让人摸不住头脑.一句话概括就是:shell编程就是对一堆Linux命令的逻辑化处理.为什么要会shell编程 举个简单的例子,我们做javaweb开发的,在以前,如果要在本地将程序打包,然后部署到远程服务器(抛开现在的ci, 原始的方法), 我们以前的做法通常会经历如下几个步骤: 拉取最新代码(git pull) 编译打包 上传并部署到远程服务器 每次打包都要经历这一个阶段,效率低又烦躁.而此时,我们可以编写一个shell脚本,然后每次只需要运行一下这

编程语言和shell编程的基础内容以及grep、egrep命令及相应的正则表达式和用法

bash的特性之多命令执行的逻辑关系: 1.命令替换(命令之间无明确的逻辑依赖关系) COMMAND1 $(COMMAND2) 2.管道(命令之间无明确的逻辑依赖关系) COMMAND1 | COMMAND2 | COMMAND3 前面的命令无论执行成功与失败后面命令继续执行:管道命令的前一个命令应该有标准和输出否则用":"隔开 例如:useradd sola :echo 456 | passwd --stdin sola 3.顺序执行结构 COMMAND1:COMMAND2:COMM

shell编程awk基础介绍

awk介绍 报告生成器,格式化文本输出 处理机制类似sed命令,自带循环处理    读入一行处理一行然后自动读取下一行再进行处理 sed命令换行的标识是固定的,只能是回车换行.    awk里面的换行符是可以自定义的. awk自动把读入的行按照指定的切割符号切割成若干个字段   默认的切割符号是空白符号(包括连续的空白符号,tab键,回车换行符) 基础语法 awk  [options]   'program'  var=value    file awk  [options]  -f progr

第一部分shell编程1基础知识

ls etc/init.d/ shell脚本的路径 ls /usr/local/apache2/ ls /usr/local/apache2/bin/apachectl 1. shell特性命令历史 history !! !$ !n !字符Tab 键可以补全文件路径或者命令alias a=“b” unalias a通配符 *匹配零个或多个字符 ?匹配一个字符输入输出重定向 >, >>, < 反向重定向, 2>, 2>> 错误重定向管道符 |作业控制 ctrl+z,

Shell编程——bash基础知识

创建脚本:vim test.sh    脚本内容:#! /bin/bash  #"#!"是一个约定标记,告诉系统用哪种shell来执行              echo "Hello world!"使脚本具有执行权限:chmod  +x ./test.sh执行脚本:./test.sh     #注意,一定要写成./test.sh,而不是test.sh.若直接写成test.sh,linux会去PATH里面找寻有没有test.sh. [shell注释]:以“#”开头的

Shell编程-控制结构 | 基础篇

if-then-else分支结构 if-then-else是一种基于条件测试结果的流程控制结构.如果测试结果为真,则执行控制结构中相应的命令列表:否则将进行另外一个条件测试或者退出该控制结构. if-then-else语法格式: if 条件1 then 命令列表1 elif 条件2 then 命令列表2 else 命令列表3 fi 执行逻辑流程图 说明:当条件1成立时,则执行命令列表1并退出if-then-else控制结构:如果条件2成立,则执行命令列表2并退出if-then-else控制结构:

2017-12-5Linux基础知识(15)shell编程

shell编程是在Linux的基础知识中所必须掌握的语言,它也是一个命令的集合,如果学会的话,我们将会事半功倍,将重复的操作通过shell编程脚本来实现,减轻了一定的负担,那么现在就来讲一下shell编程的基础. 一.编程语言的分类 其实根据其语言的分类来讲,强类型的编程语言首先要编译成为该平台的二进制程序文件所能运行,当程序文件可以运行时,编译器就不在参与,而在弱类型的编程语言当中,使用解释器将源代码边解释边执行,那么相当于前者来说,其执行的速度比后者要快得多,但是如果编译完成之后有问题的话,

linux下shell编程梳理

经常看一些有关linux的书籍仍感觉不能全面掌握这些知识其实也不可能全面掌握只要能达到熟练地使用就可以了毕竟做研发就是能快速做出能卖钱的产品民营企业为王的年代. 这些日子做产品感觉对shell部分基础有些不大熟练在此总结一些要点以期对这个shell有新的认识也做些笔记和大家分享.   一 shell的基础 Shell 是一个用C语言编写的程序它是用户使用Linux的桥梁.Shell既是一种命令语言又是一种程序设计语言. Shell 是指一种应用程序这个应用程序提供了一个界面用户通过这个界面访问操