码迷,mamicode.com
首页 > 系统相关 > 详细

shell编程之一基础

时间:2015-11-21 14:36:56      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:编程   shell   

大纲

一、编程语言分类

二、shell分类

三、变量相关概念

四、bash变量类型

五、逻辑运算

六、算术运算

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

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




一、编程语言分类

  • 距离人的远近分类:机器语言、汇编语言、高级语言

  • 执行时是否需要预先转换:编译型语言、解释性语言

  • 编程风格分类:面向对象、面向过程

  • 变量使用时是否需要预先声明:强类型语言、弱类型语言


二、shell分类及bash概念

  • GUI:Gnome、KDE、Xfce

  • CLI:sh、bash、csh、ksh、tcsh、zsh


三、变量相关概念

  • 变量定义:命名的一段内存空间

  • 赋值过程定义:保存数据到这段内存空间的过程就叫做赋值

  • 声明变量类型的作用:定义变量的存储格式、存储空间大小及支持的运算

  • 变量类型:数值型、字符型、布尔型、日期时间型


四、bash变量类型

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

[root@soysauce test]# A=‘jerry‘         # 定义一个本地变量A

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

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

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

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

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

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

5.特殊变量

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


五、逻辑运算

1.逻辑与:&&   

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

2.逻辑或:||    

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

3.逻辑非:!    

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


六、算术运算

1.let算术运算表达式

[root@soysauce scripts]# A=3
[root@soysauce scripts]# B=5
[root@soysauce scripts]# let C=$A+$B;echo $C
8

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

[root@soysauce scripts]# A=3
[root@soysauce scripts]# B=5
[root@soysauce scripts]# D=$[$A+$B];echo $D
8

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

[root@soysauce scripts]# A=3
[root@soysauce scripts]# B=5
[root@soysauce scripts]# E=$(($A+$B));echo $E
8

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

[root@soysauce scripts]# A=3
[root@soysauce scripts]# B=5
[root@soysauce 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 ]

[root@soysauce scripts]# [ 3 -gt 2 ] && echo "3>2"
3>2

(2).[[ expression ]]

[root@soysauce scripts]# [[ 3 -gt 2 ]] && echo "3>2"
3>2

(3).test expression

[root@soysauce scripts]# test 3 -gt 2 && echo "3>2"
3>2

5.组合测试条件

(1).逻辑与

[root@soysauce scripts]# [ 3 -gt 2 -a 3 -lt 5 ] && echo "2<3<5"
2<3<5

(2).逻辑或

[root@soysauce scripts]# [ 3 -gt 2 -o 3 -gt 5 ] && echo "2<3<5"
2<3<5

(3).逻辑非

[root@soysauce scripts]# [ ! 3 -gt 5 ] && echo "3<5"
3<5


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

[root@soysauce scripts]# ls /home/
user4  user8                # 这是命令的执行结果
[root@soysauce scripts]# echo $?
0                            # 这是命令的执行状态返回值,0为成功,1-255都为不成功


本文出自 “Hello,Linux” 博客,请务必保留此出处http://soysauce93.blog.51cto.com/7589461/1715355

shell编程之一基础

标签:编程   shell   

原文地址:http://soysauce93.blog.51cto.com/7589461/1715355

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!