首页 > 系统相关 >Linux 之 shell 编程

Linux 之 shell 编程

时间:2023-07-23 23:23:26浏览次数:37  
标签:语句 shell 变量 编程 权限 Linux 执行 condition

Linux 之 shell 编程学习笔记(并不完全正确,有误请指正)

概念性知识点

脚本概念

脚本(Script),是使用一种特定的描述性语言,依据一定的格式编写的 可执行文件

运行脚本要求

脚本须有 可执行 权限,即 x 权限

内容格式:以#!/bin/bash开头

脚本的执行方式

法一(需可执行权限)

赋予脚本可执行权限:chmod u+x [脚本]

有可执行权限 的前提下,使用./[脚本] 或 直接输入脚本的绝对路径 [绝对路径] 即可运行脚本

法二(无需可执行权限)

直接使用sh [脚本]命令运行脚本

shell 编程知识点

常用命令

set 查看当前shell中所有变量
unset [变量] 撤销变量
echo $[变量] 查询变量的值

shell 的变量

Linux shell 的变量分为 系统变量用户变量

常见系统变量:\$HOME 、\$PWD 、\$PATH 、\$USER 、$SHELL 等

基本规则

与其他语言规则大同小异

注意:等号两侧 不能有空格

变量名一般习惯为大写(约定俗成)

基本语法

1. 定义变量:[变量名]=[值](中间不能有空格)

2. 撤销变量:unset [变量]

3. 定义静态变量:readonly [变量名]=[值] (静态变量不能被撤销,即不能被 unset )

4. 将命令的结果赋给变量:[变量名]=`[命令]`[变量名]=$([命令]) (第一种写法中 ` 号为 tab 键上面的键

5. 输出变量时带上 $ 符号,即 echo $[变量]

位置参数变量

image

例如:

image

传参,输出:

image

预定义变量

image

例如:

image

注意:第二行 & 符号表示 以后台方式运行

输出:

image

shell 的多行注释

格式

:<<![内容]!

shell 的运算符

shell 运算的三种方法

法一(不好用)

[变量]=\$(([表达式]))

image

法二(好用)

[变量]=$[[表达式]]

image

法三(难用)

[变量]=`expr[简单表达式]`

!!!注意:` 号为反引号

数字与符号 间有空格

* 号前必须带转义字符 \

image

shell 的条件判断

判断语句

[ condition ] // 非空 返回 true ,空 返回 false

可用echo \$?查询上一条判断是否执行成功( 0 为 true ,>1 为 false )

注意:condition 前后有 空格

三元运算符

[ condition ] && [语句1] || [语句2]

若 condition 满足,则执行语句1

两个整数之间比较

= 字符串比较

-lt 小于(less than)

-le 小于等于(less equal)

-eq 等于(equal)

-gt 大于(greater than)

-ge 大于等于(greater equal)

-ne 不等于(Not equal)

按照文件权限进行判断

-r 有读的权限(read)

-w 有写的权限(write)

-x 有执行的权限(execute)

按照文件类型进行判断

-f 文件存在并且是一个常规的文件(file)

-e 文件存在(existence)

-d 文件存在并是一个目录(directory)

shell 的流程控制

if条件判断

!!!注意:condition 前后必须有 空格,即使 没有condition 也要有空格

基本语法
单分支
#单分支

if [ condition ]

then

        [符合该条件执行的语句]

fi

例如:

image

多分支
#多分支

if [ condition ]

then

        [符合该条件执行的语句]

elif [ condition ]

then

        [符合该条件执行的语句]

else

        [符合该条件执行的语句]

fi

例如:

image

case选择语句

基本语法
case \$1 in

"[条件]")

        [符合该条件执行的语句]

;; 				// ;; 符号代表 结束

"[条件]")

        [符合该条件执行的语句]

*) 				//如果没有符合上面条件的值,则执行这段代码

        [符合该条件执行的语句]

esac

例如:

image

输出:

image

for 循环

基本语法1
for [变量] in [值]

do

[代码块]

done

例如:

image

基本语法2
for (([初始值];[循环控制条件];[变量的变化]))

do

[代码块]

done

例如:

image

while 循环

基本语法
while [ 条件 ] //注意 条件 前后有空格

do

[代码块]

done

例如:

image

read 读取控制台的输入

基本语法
read -p "[提示语]" 指定输入时的提示语
read -t [秒] 指定输入的等待时间

例如:

image

shell 的函数

系统函数

basename 基本语法
basename [文件路径] 获取文件名
basename [文件路径] [后缀] 获取文件名(不带后缀)

例如:

image

dirname 基本语法
dirname [文件绝对路径] 获取文件的路径

例如:

image

自定义函数

基本语法
function [函数名]{

[代码块]

}

例如:

image

函数调用

[函数名] [参数]

例如:

image

你以为 shell 编程就这么点东西吗?漏漏漏!
这仅仅是它的皮毛而已,以后的就靠你自己来摸索吧!

标签:语句,shell,变量,编程,权限,Linux,执行,condition
From: https://www.cnblogs.com/wymk-blog/p/17574890.html

相关文章

  • Linux基础命令、目录和文件管理
    目录一、Linux基础命令1.1二、Linux目录和文件管理2.1目录2.2查看文件2.2.1七类常见文件2.2.2显示命令2.2.2.1cat2.2.2.1tac2.2.2.1rev2.2.3分页显示2.2.3.1more2.2.3.2less2.2.4显示文件前后内容2.2.4.1head2.2.4.2tail2.2.4.3tr2.2.4.4cut2.2.4.5wc2.2.4.6grep2.2.4.7paste2.2.4......
  • Linux 查看office文件及pdf文件
    1.查看pdf文件evincePdfFile_name查看office文件openoffice.org文件名&//打开或者编辑.doc.odt等文本文档命令openoffice.org-a文件名.doc&//打开演示文件命令openoffice.org-g文件名....&//打开电子表格:openoffice.org-c文件名&sofficefile_na......
  • Linux系列---【Ubuntu 20.04安装KVM】
    Ubuntu20.04安装KVM一、安装kvm1.安装kvmsudoaptinstallqemu-kvmlibvirt-daemon-systemlibvirt-clientsbridge-utils2.将当前用户添加至libvirt、kvm组sudoadduser$USERlibvirtsudoadduser$USERkvm3.验证安装virshlist--all4.启动libvertsudosyst......
  • 什么是 SAP UI5 的 Shell Layout
    ShellLayout是SAPUI5中一个重要的UI控件,它为应用程序提供了一个统一的、一致的用户界面。ShellLayout是一个基本的框架,它为应用程序提供了一个顶层的容器。这个容器包含了一些基本的UI元素,如标题栏、导航栏、工具栏、内容区域等。通过使用ShellLayout,开发者可以确保他们的应......
  • linux 中 awk数组统计每列、行数据之和及平均值
     001、列[root@PC1test02]#lsa.txt[root@PC1test02]#cata.txt##测试数据362825841382##统计每列数据之和[root@PC1test02]#awk'{for(i=1;i<=NF;......
  • SAP UI5 的 Unified Shell 发展历史和用法介绍试读版
    本教程前面的文章,我们介绍了SAPUI5的UIArea:SAPUI5应用开发教程之六番外篇-什么是SAPUI5应用的UIArea以及SAPUI5容器类控件的一些例子,比如Page和Panel控件:SAPUI5应用开发教程之十一:SAPUI5容器类控件Page和Panel在SAPUI5发展历史上,sap.ui.......
  • shell脚本-入侵检测与告警
    shell脚本-入侵检测与告警原理利用inotifywait命令对一些重要的目录作一个实施监控,例如:当/root、/usr/bin等目录发生改变的,利用inotifywait看可以对其作一个监控作用。inotifywait介绍inotifywait是一个Linux下的命令行工具,用于监视文件系统的变化。它基于inotify机......
  • Shell编程教程 - 字符串变量表达式
    1.字符串变量表达式基本比较示例脚本-`string_comparison.sh`字符串长度检查示例脚本-`string_length.sh`逻辑运算符连接表达式示例脚本-`logical_operators.sh`2.执行示例脚本3.结论大树哥个人信息本教程将向你介绍Shell脚本中字符串变量表达式的使用。我们将学习如何......
  • Day 4: Shell字符串处理
    学习目标学习内容1.字符串拼接2.字符串替换3.字符串截取4.练习任务大树哥个人信息学习目标学习Shell中的字符串处理技巧。掌握字符串的拼接、替换和截取方法。练习编写脚本,处理和操作字符串数据。学习内容今天我们将学习如何在Shell编程中处理和操作字符串。1.......
  • 如何看linux上的redis的ip
    在Linux上查看Redis的IP地址可以通过以下几种方法实现。首先,我们需要了解Redis的配置文件以及系统命令。Redis是一个开源的内存数据库,通常用作缓存或消息代理。它使用键值对的方式存储数据,并提供快速的读写性能。在Linux系统上,Redis的配置文件位于/etc/redis/redis.conf。我们可......