Shell编程基础常用代码1
Shell编程
注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flink Kafka Hbase Hive Flume等等~写的都是纯干货,各种顶会的论文解读,一起进步。
今天和大家分享一下Shell编程
#博学谷IT学习技术支持
文章目录
- Shell编程
- 前言
- 一、变量
- 1.用户自定义变量
- 2.环境变量
- 3.特殊变量
- 二、字符串
- 1.自定格式
- 2.操作
- 三、运算符
- 四、流程控制语句
- 1.if语句
- 2.for语句
- 3.while语句
- 4.死循环
- 5.case语句
- 6.break、continue
- 总结
前言
1、Shell是一种编程语言,该语言底层是C语言
2、Shell是一种解释型语言,和python类似
3、shell以后主要用于脚本编写,通过脚本实现自动化部署和调度
4、Shell是语言的统称,在Shell下面又细分了很多不同的Shell语言,默认用的Base Shell
5、Shell脚本文件的后缀是.sh,不过也可以不写
一、变量
1.用户自定义变量
----正常赋值-------------
str1='hello'
str2='I Love China' #这里必须加引号,因为字符串中间有空格
echo $str1
echo ${str1}tom #这里必须要加{}----特殊赋值1-------------
#!/bin/bash
echo "who are you?"
read name #从键盘获取变量的值
pwd_string=$(pwd) #将pwd命令的执行结果赋值给pwd_string变量
date_string=`date` #将date命令的执行结果赋值给date_string变量
echo "hello, $name"
echo $pwd_string
echo $date_string ----特殊赋值2-------------
#!/bin/bash
pwd #单独使用,可以指定pwd命令
str=$(pwd) #只能用于将pwd命令直接结果赋值给另外一变量
str=`pwd` #同上
echo $str----只读变量-------------
#!/bin/bash
myUrl="http://www.google.com"
readonly myUrl #将变量声明为只读,以后不能修改
myUrl="http://www.runoob.com" #这里修改就会报错----删除变量-------------
#!/bin/sh
myUrl="http://www.runoob.com"
unset myUrl #默认情况下,定义变量之后,直到shell脚本结束空间才会释放,加上该关键字,则立刻释放
echo $myUrl #报错
2.环境变量
1、Linux的环境变量一般都是系统提前定义好的变量
2、Linux的环境变量用户也可以定义
3、Linux的环境变量可以在整个系统起作用
4、Linux的环境变量一般都是大写字母
5、Linux的环境变量一般在/etc/profile文件定义
环境量的查看
env
自定义环境变量
1、打开/etc/profile
2、在/etc/profile中定义变量,注意变量前边加上一个export关键字export MY_ENV=helloxxxxxxxxxxxxxxxxxxx
3、刷新/etc/profile文件source /etc/profile
3.特殊变量
变量 | 解释 |
---|---|
$# | 命令行参数的个数 |
$n | $1表示第一个参数,$2表示第二个参数,以此类推 |
$0 | 当前程序的名称 |
$? | 前一个命令或许或函数的返回码 |
$* | 以“参数1 参数2 。。。”形式保存所有参数 |
$$ | 本程序的(进程ID号)PID |
#!/bin/bash
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";
echo "参数个数为:$#";
echo "传递的参数作为一个字符串显示*:$*"; $0 $1 $2 $3
sh demo6.sh aaa bbb ccc#这里 $# 为 3 表示有3个参数
#这里 $? 为 上一条命令或者脚本返回的状态码 0 表示正常 非0 表示非正常
二、字符串
1.自定格式
#!/bin/sh
a=xxx
str1=hello
str2='hello world---$a' #单引号会将包括的所有字符都当成字符串的一部分
str3="hello world---$a" #只有双引号才能识别字符串中包含的变量引用echo $str1 #输出
echo $str2 #输出 hello world---$a
echo $str3 #输出 hello world---xxx#结论----以后记着使用双引号
2.操作
1、转义
echo "hello\"world" #输出 hello\"world2、求字符串长度
str="slkgsklgsksklgsklsgklk"
echo ${#str}3、字符串截取
string="敢于亮剑决不后退"
echo ${string:2:3} #解释:2表示从2索引开始,3表示截取3个字符
三、运算符
+ | 加法 |
expr $a + $b 结果为 30。
|
---|---|---|
- | 减法 |
expr $a - $b 结果为 -10。
|
* | 乘法 |
expr $a \* $b 结果为 200。
|
/ | 除法 |
expr $b / $a 结果为 2。
|
% | 取余 |
expr $b % $a 结果为 0。
|
= | 赋值 | a=$b 将把变量 b 的值赋给 a。 |
== | 相等。用于比较两个数字,相同则返回 true。 | [ a == b ] 返回 false。 |
!= | 不相等。用于比较两个数字,不相同则返回 true。 | [ a != b ] 返回 true。 |
a=10
b=20#求两个数的和
echo `expr $a + $b` #方式1-1,运算符两边必须留空格,而且变量必须加$
echo $(expr $a + $b) #方式1-2, 运算符两边必须留空格, 而且变量必须加$echo $((a+b)) #方式2,运算符两边没有要求
echo $[a+b] #方式3,运算符两边没有要求 !!!!!
四、流程控制语句
运算符 说明
-eq 检测两个数是否相等,相等返回 true。
-ne 检测两个数是否不相等,不相等返回 true。
-gt 检测左边的数是否大于右边的,如果是,则返回 true。
-lt 检测左边的数是否小于右边的,如果是,则返回 true。
-ge 检测左边的数是否大于等于右边的,如果是,则返回 true。
-le 检测左边的数是否小于等于右边的,如果是,则返回 true。
-n STRING 字符串长度不为零
-z STRING 字符串长度为0
= 判断两个字符串是否一样
!= 判断两个字符串是否不一样
-f 存在且是普通文件
-d 存在且是目录
-h 存在且是符号链接
-e 文件存在
–r 文件存在并且可读
–w 文件存在并且可写
–x 文件存在并且可执行
1.if语句
#1)判断当前系统是否有多个ssh进程,如果有则打印true
#!/bin/bash
if [ $(ps -ef | grep -c "ssh") -gt 1 ] #注意[] 变量要留空格
then echo "true"
fi#2)判断/media/cdrom文件是否存在,若不存在就去创建这个目录
#!/bin/bash
DIR="/media/cdrom"
if [ ! -e $DIR ]
then
mkdir -p $DIR
fi#3)根据年龄判断是否成年
#!/bin/bash
read -p "请输入你的年龄:" age #键盘录入的提示符if [ $age -ge 18 ] #等价与: if test $age -ge 18
then echo "你已经成年了!"
elseecho "你还没有成年!"
fi#4)以下实例判断两个变量是否相等:
#!/bin/bash read -p "请输入a的值:" a
read -p "请输入b的值:" bif [ $a -eq $b ]
then echo "a 等于 b"
elif [ $a -gt $b ]
then echo "a 大于 b"
elif [ $a -lt $b ]
then echo "a 小于 b"
else echo "没有符合的条件"
fi#5)输入成绩,判断成绩“优”“良”“中”
#!/bin/bash
read -p "Enter your score(0-100):" n #-p参数表示给出提示信息
if [ $n -ge 85 ] && [ $n -le 100 ] ; thenecho "优"
elif [ $n -ge 70 ] && [ $n -le 84 ] ; thenecho "良"
elif [ $n -ge 60 ] && [ $n -le 69 ] ; then echo "中"
elseecho "差"
fi
2.for语句
和PYTHON差不多写法
#!/bin/bashfor i in 1 2 3 4 5
doecho "-----$i------"
done--------------------------------
#!/bin/bashdir=""if [ -z $1 ] ; thendir=$PWD
elsedir=$1
fifor file in $(ls $dir)
doecho "-------$file"
done------------输出5次hello world----------------#!/bin/bashfor((i=1;i<=5;i++))
doecho "hello world---$i"
done------------求1-100和----------------#!/bin/bash
s=0
for((i=1;i<=100;i++))
do#s=$((s+i))#s=$[s+i]let s+=i #加上let关键字,可以让shell的运算符和高级语言接轨 如: let s++
done
echo "The sum of 1+2+..+100 is : $s"
3.while语句
--------1)输出1-5之间的数字------------
#!/bin/bash
num=1
while [ $num -le 5 ]
doecho $numlet num++
done-------2)求1-100的和-------------
#!/bin/bash
i=1
sum=0
while [ $i -le 100 ]
dolet sum+=ilet i++
done
echo $sum
4.死循环
# 格式1
for((;;))
doecho "hello world"sleep 1
done# 格式2
#!/bin/bash
while :
doecho "hello world"sleep 1
done# 格式3
#!/bin/bash
while true
doecho "hello world"sleep 1
done
5.case语句
#!/bin/bashread -p "请输入你的选择(1-3):" numcase $num in1) echo "你选择了1";;2)echo "你选择了2";;3)echo "你选择了3";;*)echo "你选择了其他";;
esac------case的穿透-----------------
#!/bin/bashread -p "请输入你的选择(1-3):" numcase $num in1|2|3) echo "你选择了1或2或3";;*)echo "你选择了其他";;
esac
6.break、continue
和python java 里面的break、continue用法完全一样
#!/bin/bashwhile :
doecho -n "输入 1 到 5 之间的数字:"read aNumcase $aNum in1|2|3|4|5) echo "你输入的数字为 $aNum!";;*) echo "你输入的数字不是 1 到 5 之间的! 游戏结束"break#continue#echo "游戏结束";;esac
done
总结
今天和大家分享了Shell编程基础常用代码1,下次和大家分享Shell编程基础常用代码2函数,数组,select等语法。.
Shell编程基础常用代码1相关推荐
- Linux Shell编程基础
linux系统下给命令指定别名alias命令用法: 在linux系统中如果命令太长又不符合用户的习惯,那么我们可以为它指定一个别名.虽然可以为命令建立"链接"解决长文件名的问题,但 ...
- shell编程基础笔记
第一部分shell编程基础 1shell简介 什么是shell 存取权限和安全 shell简单脚本 shell特性 1.1什么是shell shell是核心程序kernel之外的指令解析器,是一个程 ...
- 「Linux」Linux Shell 编程基础入门
Linux Shell 编程基础入门 1. 变量 1.1 变量定义 1.2 使用变量 1.3 引号 1.4 将命令的结果赋值给变量 1.5 位置参数 1.6 特殊变量及其含义 2. 字符串 2.1 字 ...
- 【⛔拒绝内卷,学会shell,走遍天下都不怕⛔】shell编程基础
shell编程基础 shell简介 属性 shell是一个命令行解释器,建立了用户和操作系统之间的接口.当我们在命令行输入一个命令后,shell会对命令进行解释,调用相应的程序去执行.shell是一种 ...
- Excel VBA 编程的常用代码
强制声明变量 Option Explicit 说明:该语句必在任何过程之前出现在模块中. 声明常数 用来代替文字值. Const ' 常数的默认状态就是 Private. Const My = 456 ...
- Shell编程基础---shell的结构、执行及变量
2019独角兽企业重金招聘Python工程师标准>>> 本文索引: shell脚本介绍 shell脚本结构和执行 date命令用法 shell脚本中的变量 shell脚本介绍 she ...
- Linux 脚本大师不是人人都可以达到的,但Shell编程基础还是有必要掌握的
Linux Shell是一种基本功,由于怪异的语法加之较差的可读性,现在逐渐被Python等脚本代替.既然是基本功,那就需要掌握,毕竟学习 Shell 脚本的过程中,还是能了解到很多Linux系统 ...
- Linux: Shell编程基础
我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行): #!/bin/bash ... 注意:最好使用&quo ...
- 第二课《shell 编程基础》
编程语言分类: 编译型 解释型 编译型语言:c.c++.c# 解释型语言: 内置型:shell.perl源码并入了linux kernel,提供内核级单条语句的效率 外置型:python.java.j ...
最新文章
- 使用Zabbix官方模板监控MySQL
- 蓝桥杯java第四届决赛第一题--猜灯谜
- OpenKruise 如何实现 K8s 社区首个规模化镜像预热能力
- python 32位和64位的区别在哪
- ab ApacheBench web测试工具
- 02-NVIDIA Jetson TX2 通过JetPack 3.1刷机完整版(踩坑版)
- java面试题三_最全的java面试题目三
- html z-dext优先级顺序,$ext{1D/1D}$ 动态规划的三种优化
- STM32工作笔记0086---UCOSIII信号量和互斥信号量(下)
- 99%的程序都没有考虑的网络异常
- Windows DLL 注入技术
- UMTS基础知识汇总
- python自动补全vim_Python 自动补全(vim)
- 【面霸系列 - 3】初级java如何挖掘自身的优势
- Millet谷仓:区块链和电商的完美融合
- Atmel Studio 编译no such file
- OpenCV3之——图像修补inpaint()函数
- ISTQB TM考点总结之第三章
- oracle计算日期倒计时,时间倒算回去到了哪里?│机械倒数计时码表
- 一款png生成webp,gif, apng,同时支持webp,gif, apng转化的工具iSparta