提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、shell简介
  • 二、shell的基础知识
    • 字符型数据
    • 数组型数据
    • 运算
    • 流程控制
      • 判断语句
      • 文件类型的判断
      • if 语句
      • for循环
      • while 循环
      • case语法
      • 函数
      • select
        • selct与case结合

【博学谷IT技术支持】

一、shell简介

  • shell 是一种编写脚本程序的语言,常用于linux
  • shell是解释型语言,相对于其他的语言更加好学,它的语法和结构也比较简单
  • 通过编写脚本,能显著的提高开发的效率

二、shell的基础知识

每个sh文件都有这个开头,是指此脚本使用/bin/bash来解释执行

#!/bin/bash

字符型数据

这里注意以下几点,分别是

  1. 变量的声明方式
  2. 一般建议使用双引号,变量和值左右之间不能有空格
  3. 这里输出使用echo 输出变量需要在变量前加$
  • 输出单个变量
str1="123"
echo $str1 # 123
  • 输出多个变量
str2="456"
echo "str1=$str1, str2=$str2" # str1=123, str2=456

注意:这里也可以使用${},但是建议使用上边的,比较简化

数组型数据

  • 素组的产生与使用凡是,如何获取数组的长度
@ 和* 可以获取数组中的所有元素
arr1=(1,2,3)
echo ${arr1[0]} ${arr1[1]} ${arr1[2]} # 1 2 3
echo ${arr1[*]}
echo ${arr1[@]}# 截取字符串的长度
# 截取从第2个到第4个字符串
str3="你好我好大家好"
echo ${str3:2:2} # 我好# 获取字符串的长度
echo ${#str3} # 7

运算

  • shell的运算表达式比较麻烦,有使用expr表达式的,也有用$(()) 也有用$[]。这里推荐使用$[],原因是它省事
  • 注意一点的是乘法需要在*号前加\
a=1
b=2
echo `expr $a + $b` # 3
echo `expr $a \* $b` # 2
echo "========"
echo $((a+b)) # 3
echo "========"
echo $[a+b] # 3

流程控制

判断语句

这里是判断语句使用的运算法

  • -eq -ne 是对两个数进行判断,前者判断相同(=),后者判断不同(!=),均返回true
  • -gt -ge 分别是大于号(>)和大于等于号(>=), 结果是返回true
  • -lt -le 分别是小于号(<)和小于等于号(<=), 结果是返回true
  • -n SRING 判断字符串不为0
  • -z 判断字符串长度为0

文件类型的判断

  • -r -w -x 分别是文件存在可读,文件存在可写
  • -e -f -d 分别是文件存在,文件存在且是普通文件,文件存在且是目录
  • -h 存在且是符号链接

if 语句

注意if是有结束标志fi

if [ -n "123" ]; thenecho "123字符串的长度不为0"
fiif [ -z "" ]; thenecho "空字符串的长度为0"
fiaddressUrl=/export/shell/
if [ -e $addressUrl ]; thenecho "存在该文件夹"
elseecho "不存在该文件夹"
fiif [ -f $addressUrl ]; thenecho "该文件存在是普通文件"
elseecho "该文件存在不是普通文件"
fiif [ -d $addressUrl ]; thenecho "文件存在且是目录"
elseecho "文件存在且不是目录"
fiif [ -e $addressUrl ]; thenecho "存在该文件夹"
elif [  ! -e $addressUrl ]; thenecho "不存在该文件夹"if

for循环

  • for也可以用来读取数组
for i in 1  2  3  4
doecho "这是第$i个数字"
donefor((i=0; i< 10; i++))
doecho "展示第$i个循环数字"
done

while 循环

  • 这里求10的自减总值为多少 使用let 可以使用shell中的一些高级语法
num=10
total=0
while [ $num -lt 1]
dototal=$[total+num]echo "total=$total" let num--
done

case语法

echo "请选择您的1-3的数字:"
read -p "您输入的数字为:" num
case $num in 1) echo "您输入的是$num";;2) echo "您输入的是$num";;3) echo "您输入的是$num";;*) echo "您的输入有误";;
esac

函数

传递参数的特殊变量

  • $# 命令行参数的个数
  • $n n从1开始,类推代表第n个参数
  • $0 当前程序的名称
  • $? 前一个命令或者函数的返回码
function funcDemo() {echo "这个方法的名字为$0"echo "参数1为$1,参数2为$2,参数3为$3"echo "当前总共$#个参数"
}
getName 1 2 3
echo "前一个命令的返回码为$?"

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6QupHHJp-1662782536003)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f87241a1d867405b8f4b630bec9c8181~tplv-k3u1fbpfcp-watermark.image?)]

返回值的范围是0-255

  • 0是命令运行成功 1是通知未知错误 2是误用shell命令
  • 126是命令不可执行 127是没有找到命令 128是无效退出参数
  • 128+x是linux信号x的严重错误
  • 255是退出状态码越界

select

echo "少男,少女,你想要什么斧头"
PS3="你要金斧头还是银斧头: "
select i in "金斧头" "银斧头" "铜斧头"
dobreak;done
echo "少男,少女 这是你的$i"

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AEQwRQ1F-1662782536005)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4c60cb3433c24fc1966ce94235206849~tplv-k3u1fbpfcp-watermark.image?)]

selct与case结合


echo "少男,少女,你想要什么斧头"
PS3="你要金斧头还是银斧头: "
select i in "金斧头" "银斧头" "铜斧头"
docase $i in "金斧头") echo "这是黄金做的啊, 你可以卖掉了";;"银斧头") echo "这是你的银斧头,你想做什么呢";;"铜斧头") echo "这是你的铜斧头,只能劈柴哦";;esacbreak;
done
echo "少男,少女 这是你的$i"

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-siZNFrOF-1662782536006)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c43ab77d148f41019e08b450a3407272~tplv-k3u1fbpfcp-watermark.image?)]

【博学谷学习记录】超强总结,用心分享 | shell基础相关推荐

  1. [博学谷学习记录]超强总结,用心分享|第07节 常用的API-----笔记篇

    目录 1.API 1.1 API概述-帮助文档的使用 1.2 键盘录入字符串 2. String类 2.1 String概述 2.2 String类的构造方法 2.4 创建字符串对象的区别对比 2.5 ...

  2. {博学谷学习记录} 超强总结,用心分享|狂野架构师-前置互联网架构演变过程

    本章以系统架构,数据架构,两种维度来进行讲解 目录 1 系统架构 1,1 单体架构 1.2 中台战略 2 数据库架构 2,1 单体架构 2.2 主从读写 2.3 分库分表 3 总结 1 系统架构 1, ...

  3. [博学谷学习记录]超强总结,用心分享|架构 Nacos入门

    提示:学习笔记 欢迎指点 文章目录 前言 一.Nacos安装 二.Nacos服务注册与发现 1.服务提供者Provider 2.服务消费者Consumer 三.Nacos作为配置中心 前言 Nacos ...

  4. [博学谷学习记录]超强总结,用心分享|架构 敏捷 - 开发管理之道

    提示:学习笔记 欢迎指点 文章目录 1.敏捷开发思想之道 2.面向对象开发之道 3.敏捷学习之道 1.敏捷开发思想之道 一名敏捷开发者,敏捷思想的掌握自然首当其冲.在敏捷开发实施的过程中,我们虽然不是 ...

  5. [博学谷学习记录]超强总结,用心分享|第16节 集合续-----笔记篇

    目录 1.HashSet集合 1.1HashSet集合概述和特点[应用] 1.2HashSet集合的基本应用[应用] 1.3哈希值[理解] 1.4哈希表结构[理解] 1.5HashSet集合存储学生对 ...

  6. [博学谷学习记录] 超强总结,用心分享|陌陌综合案例

    注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flin ...

  7. [博学谷学习记录]超强总结,用心分享|Hive的压缩格式

    压缩格式 工具 算法 文件扩展名 是否可切分 DEFAULT 无 DEFAULT .deflate 否 Gzip gzip DEFAULT .gz 否 bzip2 bzip2 bzip2 .bz2 是 ...

  8. [博学谷学习记录]超强总结,用心分享|软件测试之计算机基础(一)

    本周开始学习软件测试,而我也即将开始在平台记录我的学习之路.我会把我的个人心得及掌握的知识发布在此平台,俗话说最好的输入就是输出,希望在输出的同时能有更多的收获,也希望与大家多多交流. 为了更好的学习 ...

  9. [博学谷学习记录]超强总结,用心分享|人工智能机械学习基础知识线性回归总结分享

    1.线性回归的核心是参数学习,线性回归和回归方程(函数)有关 2.线性回归是目标值预期是输入变量的线性组合 3.欠拟合的产生原因是学习到数据的特征过少 4.多元线性回归中的"线性" ...

  10. [博学谷学习记录] 超强总结,用心分享|JavaEE就业课-尊享无忧+Java基础语法|面向对象(1wk)

    学习笔记目录 目录 学习笔记目录 前言 一.变量 1. 关键字:被java赋予特殊含义的字符 2. 常量:不会发生改变的量(数据)​编辑 3. 变量:内存中的存储空间. 4. 类型转换 5. 算术运算 ...

最新文章

  1. python(matplotlib)画柱状图(1)
  2. select每门可说大于90分_小女子风雨黑暗无惧 90分全自动反向折叠照明伞
  3. TestNG:在一个测试类中使用@DataProvider依次运行测试
  4. 这群程序员疯了!他们想成为IT界最会带货的男人
  5. ZZULIOJ 1112: 进制转换(函数专题)
  6. LeetCode OJ - Best Time to Buy and Sell Stock II
  7. 存储过程 insert
  8. linux上apache目录在哪,Linux下Apache目录明细
  9. WSL离线安装到任意目录
  10. atitit 编程语言概念与原理
  11. aix系统服务器日志外发,AIX系统日志
  12. csdn头像修改失败的解决办法
  13. nio java是什么_JAVA NIO是什么(zz)
  14. C#——NPOI对Excel的操作、导入导出时异常处理(三)
  15. VersaBank开发“数字保险箱”区块链服务
  16. STM32F107的SPI3不能使用的问题
  17. 项目经历怎么写_简历里的项目经历怎么写才能打动招生官和面试官?
  18. 经济师考了有什么用?
  19. 使用长角牛演示:防止ARP被攻击的原理和配置----------划水也别忘记学着玩
  20. 微信浏览器字体调整 PHP,微信h5禁止微信内置浏览器调整字体大小-爬坑

热门文章

  1. 谷歌colab“几键”运行图像超分辨率模型-ESRGAN,操作详解
  2. 笔记本重装windows系统,office全家桶消失的解决方案
  3. 服务器断电重启,mysql未启动。
  4. C语言——整数直角三角形
  5. CPU微指令相关概念
  6. 联想突围:老外主守、本土主攻
  7. 【邻接矩阵乘法】沼泽鳄鱼
  8. Software Protection无法启动造成slmgr.vbs激活win10失败
  9. 数据对象与对象之间相似度与相异度的度量
  10. 解决vue和vue-template-compiler版本不一致问题