首页 / LINUX / linux-shell编程基础
linux-shell编程基础
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux-shell编程基础,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4864字,纯文字阅读大概需要7分钟。
内容图文
![linux-shell编程基础](/upload/InfoBanner/zyjiaocheng/1158/26e807e335fe486ead3e6d3472c7ad98.jpg)
第1章 shell基础
1.1 什么是shell
Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出屏幕返回给用户。
1.1.1 shell对话方式
交互的方式:从键盘输入命令,通过/bin/bash的解析,可以立即得到Shell的回应,一问一答的方式
非交互式:shell脚本
1.2 为什么使用shell编程
作为一个合格的运维人员必须掌握一种或一种以上的脚本语言,shell编程则是实现Linux/UNIX系统管理及自动化运维所必备的重要工具,可以把繁琐重复的命令写到shell脚本中执行,节约时间,有效的提高运维人员的工作效率,减少不必要的重复工作时间。
1.3 系统中的shell
linux系统默认shell是bash
[root@zeq ~]# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/dash /bin/tcsh /bin/csh
第2章 变量
2.1 什么是变量
x+y=20 x=10 y=? 未知数(变量)
一个未知数,随时可以变化的量叫变量
2.2 变量的分类
2.2.1 普通变量(局部变量)
只能在当前环境下使用,可以通过export命令临时把普通变量变为环境变量使用
[root@zeq ~]# ip=10.0.0.201 给变量赋值(把数据存放到变量中) [root@zeq ~]# echo $ip 10.0.0.201
2.2.2 环境变量(全局变量)
1.大写
2.系统定义的
3.在大部分地方可以使用
2.2.3 特殊变量
$1 $2 $数字 $后数字是几代表shell脚本第几个参数
$# shell脚本中参数的个数
判断脚本的参数个数
$? 上一个命令的执行结果(返回值)
0 执行正确
非0 执行失败
$0 脚本文件名
第3章 shell脚本的书写规范
3.1.1 脚本存放位置
为了防止脚本乱放,统一存放在/server/scripts/中
创建目录
[root@zeq ~]# mkdir -p /server/scripts/ [root@zeq ~]# cd /server/scripts/
3.1.2 脚本编辑使用vim
3.1.3 选择解释器
在执行bash脚本的时候,内核会根据"#!"后的解释器来确定该用那个程序解释这个脚本中的内容。
[root@zeq ~]# vim /server/scripts/cal.sh #!/bin/bash
3.1.4 文件名书写
文件名称一定要有意义,方便看出是干嘛用的脚本,并且以.sh结尾
3.1.5 书写脚本的规范和习惯
1、 放在统一目录下,方便查找
2、 书写脚本要用vim编辑,
批量删除
批量增加
1.进入批量编辑模式(可视块)esc下ctrl+v
2.选择 批量增加的范围
3.按 shift + i 进行修改
4.按esc 退出等等
3、 脚本文件名称以.sh结束
4、 脚本开头一定要指定解释器
5、 脚本中#代表注释,#后的内容不会执行,不用的命令等可以用#注释掉,脚本中尽量不要出现中文注释以免出现因字符集不同产生乱码
6、 代码符号书写规范
1.成对的符号一定要都写出来再添加内容,避免遗忘漏写;如 "" ‘‘ []等
2.流程控制语句一次书写完,再添加内容;(if 条件 ; then 内容;fi)
3.书写的代码符号都是英文输入法格式
4.通过缩进让代码易读
第4章 shell练习
书写一个计算器脚本
4.1 数字计算方法
[root@zeq ~]# awk ‘BEGIN{print 1/2}‘ 0.5
4.1.1 命令行中的变量 放在awk中使用
awk -v变量=赋值 变量名称自己定义
[root@zeq ~]# awk -vnum1=10 -vnum2=20 ‘BEGIN{print num1/num2 }‘ 这里变量为num1和num2 0.5
4.1.2 书写脚本计算10与20的加减乘除
[root@zeq]# vim cal.sh#!/bin/bash n1=10 n2=20 awk -vnum1=$n1 -vnum2=$n2 ‘BEGIN{print num1+num2 }‘ awk -vnum1=$n1 -vnum2=$n2 ‘BEGIN{print num1-num2 }‘ awk -vnum1=$n1 -vnum2=$n2 ‘BEGIN{print num1*num2 }‘ awk -vnum1=$n1 -vnum2=$n2 ‘BEGIN{print num1/num2 }‘
执行脚本
[root@zeq /server/scripts]# sh cal.sh 30 -10 200 0.5
4.1.3 定义特殊变量 通过命令行传递参数方式进行计算
[root@zeq /server/scripts]# vim cal.sh#!/bin/bash n1=$1 第一个参数 n2=$2 第二个参数 awk -vnum1=$n1 -vnum2=$n2 ‘BEGIN{print num1+num2 }‘ awk -vnum1=$n1 -vnum2=$n2 ‘BEGIN{print num1-num2 }‘ awk -vnum1=$n1 -vnum2=$n2 ‘BEGIN{print num1*num2 }‘ awk -vnum1=$n1 -vnum2=$n2 ‘BEGIN{print num1/num2 }‘
执行脚本
[root@zeq /server/scripts]# sh cal.sh 10 20 后面要跟上两个参数才能执行成功,参数之前加空格 30 -10 200 0.5
4.2 通过read 交互式
read交互式赋予变量内容
read -p "提示信息:" 变量名字
read -p "提示信息:" p
执行之后会把输入的信息存放在变量中
[root@zeq /server/scripts]# read -p "input num1:" n1 input num1:zeq [root@zeq /server/scripts]# echo $n1 zeq
4.2.1 通过read命令实现 n1 n2赋值 进行计算
[root@zeq /server/scripts]# vim cal.read.sh#!/bin/bash read -p "input num1,num2:" n1 n2 一条命令直接定义两个变量 awk -vnum1=$n1 -vnum2=$n2 ‘BEGIN{print num1+num2 }‘ awk -vnum1=$n1 -vnum2=$n2 ‘BEGIN{print num1-num2 }‘ awk -vnum1=$n1 -vnum2=$n2 ‘BEGIN{print num1*num2 }‘ awk -vnum1=$n1 -vnum2=$n2 ‘BEGIN{print num1/num2 }‘
执行脚本
[root@zeq /server/scripts]# sh cal.read.sh input num1,num2:10 20 随便输入两个数值,中间要有空格 30 -10 200 0.5
4.3 条件表达式 if
4.3.1 判断目录、文件是否存在
[ -d /data ]
[ -f /data ]
注意格式:[空格-f /data空格] []里面两端必须有空格,中间写内容
[root@zeq /server/scripts]# [ -d /data ] [root@zeq /server/scripts]# echo $? $?特殊变量,0代表执行正确,非0执行失败 0 [root@zeq /server/scripts]# [ -d /data123 ] [root@zeq /server/scripts]# echo $? 1
4.3.2 比大小
-eq equal ==
-ne not equal !=
-gt great than >
-ge great equal >=
-lt less than <
-le less equal <=
4.3.3 比大小举例
[root@zeq /server/scripts]# [ 10 -eq 10 ] [root@zeq /server/scripts]# echo $? 0 [root@zeq /server/scripts]# [ 10 -gt 10 ] [root@zeq /server/scripts]# echo $? 1 [root@zeq /server/scripts]# [ 10 -ge 10 ] [root@zeq /server/scripts]# echo $? 0
4.3.4 if单分支格式脚本
格式: if [ 条件 ];then
命令
fi
1、判断脚本的参数个数,如果不是2则提示请输入两个数字
[root@zeq /server/scripts]# cat pan.sh#!/bin/bashif [ $# -ne 2 ];then echo "输入两个数字" fi
2、 给计算器(参数传递)增加一个条件
判断脚本的参数个数,
如果不是2则
提示请输入两个数字
[root@zeq /server/scripts]# cat cal.sh#!/bin/bash n1=$1 n2=$2 if [ $# -ne 2 ];then echo "USAGE: $0 num1 num2" $0文件名 exit exit 退出的意思 fi awk -vnum1=$n1 -vnum2=$n2 ‘BEGIN{print num1+num2 }‘ awk -vnum1=$n1 -vnum2=$n2 ‘BEGIN{print num1-num2 }‘ awk -vnum1=$n1 -vnum2=$n2 ‘BEGIN{print num1*num2 }‘ awk -vnum1=$n1 -vnum2=$n2 ‘BEGIN{print num1/num2 }‘
3、执行脚本
[root@zeq /server/scripts]# sh cal.sh USAGE: cal.sh num1 num2 [root@zeq /server/scripts]# sh cal.sh 120 20 140 100 2400 6
4.3.5 if双分支格式脚本
格式: if [ 条件 ];then
命令
else
命令
fi
1、comp.sh输入两个数字:
1.如果n1大于n2
输出 n1 > n2
2.如果n1不大于n2
输出 n1 <= n2
[root@zeq /server/scripts]# cat comp.sh#!/bin/bash n1=$1 n2=$2 if [ $n1 -gt $n2 ];then echo "$n1 > $n2"else echo "$n1 <= $n2" fi
2、执行脚本
[root@zeq /server/scripts]# sh comp.sh 10 20 10 <= 20 [root@zeq /server/scripts]# sh comp.sh 10 10 10 <= 10 [root@zeq /server/scripts]# sh comp.sh 100 10 100 > 10
原文:https://www.cnblogs.com/zeq912/p/9501915.html
内容总结
以上是互联网集市为您收集整理的linux-shell编程基础全部内容,希望文章能够帮你解决linux-shell编程基础所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。