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相关推荐

  1. Linux Shell编程基础

    linux系统下给命令指定别名alias命令用法: 在linux系统中如果命令太长又不符合用户的习惯,那么我们可以为它指定一个别名.虽然可以为命令建立"链接"解决长文件名的问题,但 ...

  2. shell编程基础笔记

    第一部分shell编程基础 1shell简介 什么是shell 存取权限和安全 shell简单脚本 shell特性 1.1什么是shell shell是核心程序kernel之外的指令解析器,是一个程 ...

  3. 「Linux」Linux Shell 编程基础入门

    Linux Shell 编程基础入门 1. 变量 1.1 变量定义 1.2 使用变量 1.3 引号 1.4 将命令的结果赋值给变量 1.5 位置参数 1.6 特殊变量及其含义 2. 字符串 2.1 字 ...

  4. 【⛔拒绝内卷,学会shell,走遍天下都不怕⛔】shell编程基础

    shell编程基础 shell简介 属性 shell是一个命令行解释器,建立了用户和操作系统之间的接口.当我们在命令行输入一个命令后,shell会对命令进行解释,调用相应的程序去执行.shell是一种 ...

  5. Excel VBA 编程的常用代码

    强制声明变量 Option Explicit 说明:该语句必在任何过程之前出现在模块中. 声明常数 用来代替文字值. Const ' 常数的默认状态就是 Private. Const My = 456 ...

  6. Shell编程基础---shell的结构、执行及变量

    2019独角兽企业重金招聘Python工程师标准>>> 本文索引: shell脚本介绍 shell脚本结构和执行 date命令用法 shell脚本中的变量 shell脚本介绍 she ...

  7. Linux 脚本大师不是人人都可以达到的,但Shell编程基础还是有必要掌握的

      Linux Shell是一种基本功,由于怪异的语法加之较差的可读性,现在逐渐被Python等脚本代替.既然是基本功,那就需要掌握,毕竟学习 Shell 脚本的过程中,还是能了解到很多Linux系统 ...

  8. Linux: Shell编程基础

    我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行): #!/bin/bash ... 注意:最好使用&quo ...

  9. 第二课《shell 编程基础》

    编程语言分类: 编译型 解释型 编译型语言:c.c++.c# 解释型语言: 内置型:shell.perl源码并入了linux kernel,提供内核级单条语句的效率 外置型:python.java.j ...

最新文章

  1. 使用Zabbix官方模板监控MySQL
  2. 蓝桥杯java第四届决赛第一题--猜灯谜
  3. OpenKruise 如何实现 K8s 社区首个规模化镜像预热能力
  4. python 32位和64位的区别在哪
  5. ab ApacheBench web测试工具
  6. 02-NVIDIA Jetson TX2 通过JetPack 3.1刷机完整版(踩坑版)
  7. java面试题三_最全的java面试题目三
  8. html z-dext优先级顺序,$ext{1D/1D}$ 动态规划的三种优化
  9. STM32工作笔记0086---UCOSIII信号量和互斥信号量(下)
  10. 99%的程序都没有考虑的网络异常
  11. Windows DLL 注入技术
  12. UMTS基础知识汇总
  13. python自动补全vim_Python 自动补全(vim)
  14. 【面霸系列 - 3】初级java如何挖掘自身的优势
  15. Millet谷仓:区块链和电商的完美融合
  16. Atmel Studio 编译no such file
  17. OpenCV3之——图像修补inpaint()函数
  18. ISTQB TM考点总结之第三章
  19. oracle计算日期倒计时,时间倒算回去到了哪里?│机械倒数计时码表
  20. 一款png生成webp,gif, apng,同时支持webp,gif, apng转化的工具iSparta

热门文章

  1. 华为鸿蒙太空人壁纸,华为太空人动态图片大全
  2. CSDN网站个性化推荐功能测试
  3. 用JS获取当前的时间
  4. 【JavaScript】动态显示当前时间
  5. 使用matlab代码读取展示MIT-BIH心律失常数据库数据(带注释)
  6. echarts 网格属性_echarts 绘制网格 教你使用graphic
  7. 智能手机的次世代竞争:从参数到痛点
  8. Linux-Centos设置Redis自启及关闭Nginx自启
  9. 文字识别darknet-ocr学习
  10. oracle pivot函数demo