Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3657021
  • 博文数量: 365
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2522
  • 用 户 组: 普通用户
  • 注册时间: 2019-10-28 13:40
文章分类

全部博文(365)

文章存档

2023年(8)

2022年(130)

2021年(155)

2020年(50)

2019年(22)

我的朋友

分类: LINUX

2020-03-09 17:09:05

1. shell 基本语法
shell:
shell 是一个命令解释器,它在操作系统的最外层,负责直接与用户进行对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户。


什么是 shell 脚本:
把 Linux 命令或语句放在一个文件中,通过这个程序文件去执行,这个程序为 shell 脚本或 shell 程序;可以在脚本中输入系统的命令以及相关的语法语句组合,比如变量,流程控制语句等,把他们有机结合起来就形成了一个功能强大的 shell 脚本。


创建 shell 程序的步骤:
(1)创建一个包含命令和控制结构的文件,vim first.sh


(2)修改这个文件的权限使它可以执行,chmod +x first.sh


(3)检测语法错误;


(4)执行脚本。


执行 shell 脚本的方式:
(1)通过绝对路径执行,/root/first.sh(需要添加可执行权限x)


(2)bash first.sh 或 sh first.sh(可以不添加可执行权限)


(3)source first.sh(可以不添加可执行权限,在当前 shell 执行)


(4)sh < cal.sh,cat cal.sh |sh,cat cal.sh |bash(可以不添加可执行权限)


初识 shell 脚本:
#!/bin/bash                
# it is a shell!           
echo "hello world!"
 
# 第一行:命令解释器类型
# 第二行:注释信息
2. shell 变量及运用 
变量设置规则:
(1)变量名称通常是大写字母,可以由数字、字母(大小写)和下划线组成。变量名区分大小写,不能以数字开头;


(2)a=10,= 的作用是赋值,= 两边不能有空格;


(3)变量存储的数据类型是整数型和字符串型;


(4)字符串型建议加引号。如果字符串中有空格,要用单引号‘’或双引号“”包含起来;


(5)变量调用时,在变量前加 $,$a;


(6)如果需要增加变量的值,可以进行变量值的叠加。变量需要用双引号包含“$变量名”或用${变量名}包含。






变量的分类:
按照变量的作用划分:


(1)用户自定义变量(字母或下划线开头,不能以数字开头)


(2)环境变量:保存和系统操作环境相关的数据


(3)位置参数变量:
向脚本中传递参数或数据的,变量名不能自定义,变量的作用是固定的


(4)预定义变量:是 bash 中已经定义好的变量,变量名不能自定义,变量的作用是固定的


按照变量的作用域划分:


(1)全局变量:环境变量,值不随 shell 脚本的执行结束而消失,值传递给子 shell 而不传递给父 shell


       env 命令查看所有全局变量:






       export 声明全局变量:






       添加环境变量:






(2)局部变量:是 shell 程序内部定义的,其使用范围仅限于定义它的程序,对其它程序不可见。包括用户自定义变量、位置变量和预定义变量






命令的替换:
使用 $() 或反引号。echo $(pwd) 或 echo `pwd`


命令的嵌套使用:
使用 $($())






单引号和双引号:
在单引号中,所有的字符(包括特殊字符)都将解释成字符本身成为普通字符;


在双引号中,除了 $、'' 和 \ 以外所有的字符都解释成字符本身。


删除变量:
unset 变量名:删除变量






定义变量的配置文件:
/etc/profile:系统全局环境和登陆系统的一些配置


/etc/bashrc:shell 全局自定义配置文件,用于自定义 shell


/root/.bashrc:用于自定义某个用户的bash


/root/.bash_profile:用户单独自定义某个用户的系统环境


插入永久变量:(1)vim /etc/profile;(2)在最后一行写入 export var8=100,保存并退出;(3)source /etc/profile


位置变量:




特殊变量:
$* 以一个单字符串显示所有向脚本传递的参数
$# 传递到脚本的参数的个数
$$ 当前进程的进程号 PID
$? 显示最后命令的退出状态;0表示没有错误,其他值都表示有错误
$! 后台运行的最后一个进程的进程号 PID
3. 数学运算
expr 命令:
(1)对数字的基本计算;做比较时,输出结果为假时为0,1为真;特殊符号用转义符






(2)对字符串的处理






$(()):
运算符 意义
++   -- 递增   递减
+   -   !~ 正   负   逻辑与取反
+   -   *   /   % 加   减   乘   除   余数
<   <=   >   >= 比较大小
==   != 相等   不相等
>>   << 向左位移   向右位移
&   ^   | 按位的与   按位的异或   按位的或
&&   || 逻辑与   逻辑或
?: 条件判断
 


计算从1加到100的值:


阅读(1366) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~