Shell脚本的编写

第一个Shell脚本

新建一个文件test.sh,扩展名为sh,扩展名不影响脚本的执行,见名知意就好。 

#!/bin/bash   #shell脚本第一行通常是该语句,#!是一个约定的标记,告诉系统脚本需要什么解释器来执行
echo "Hello World !"

运行Shell脚本的方法

chmod +x ./test.sh    #是脚本具有执行权限
./tesh.sh    #执行脚本

Shell变量

#定义变量
your_name="Tom"    #变量的定义格式为 变量名=变量值,=两边不能有空格#使用变量
echo ${your_name}    #使用变量需要加$,变量名外面的花括号可加可不加,{}是为了帮助解释器识别变量边界#只读变量:只读变量的值不能够被改变
readonly your_name    #使用readonly将变量设置为只读#删除变量
unset your_name    #使用unset 变量名可以删除变量,变量删除后不能再次使用,只读变量不能被删除

变量的类型有:字符串变量、整数变量、数组变量、环境变量、特殊变量

字符串变量:

注意:字符串的索引从0开始

str='this is a dog'    #单引号的字符串任何字符都会原样输出,单引号字符串中的变量是无效的
str="this is ${gog_name}"
str1="hello, "$your_name"!"    #可以使用双引号进行字符串的拼接#获取字符串的长度
string="abcd"
echo ${#string}    #输出4#提取子字符串
string="runoob is a great site"
echo ${string:1:4} #从第二个字符开始,截取4个字符,输出unoo

数组变量:

#数组变量
my_array=(1 2 3 4 5)#关联数组(也称为哈希表或字典) 
declare -A associate_array
associate_array["name"]="John" #获取数组的长度
length=${#array_name[@]}
或
length=${#array_name[*]}length=${#array_name[n]}    #获取第n个元素的长度

环境变量:由操作系统或用户设置的特殊环境变量,用于配置shell的行为和影响其执行环境

#常见的环境变量
HOME:用户的主目录
PATH:执行命令时要搜索的目录列表
PWD:当前工作目录#设置环境变量
export MY_VARIABLE="my value"    #使用export设置为环境变量#查看环境变量
printenv 或 env命令查看所有的环境变量#修改环境变量
PATH="$PATH:/new/directory"
export PATH#删除环境变量
unset MY_VARIABLE    #使用unset删除环境变量

 Shell传递参数

shell脚本内获取参数的格式为$n 表示第n个参数 

#!/bin/bashfunction show(){echo "第一个参数为 $1"echo "第二个参数为 $2"
}show 0 1输出结果为:
第一个参数为0
第二个参数为1

Shell基本运算符

算术运算符、关系运算符、布尔运算符、字符串运算符、文件测试运算符

算术运算符:

原生的bash不支持简单的数学运算,但是可以通过expr命令来实现,能完成表达式的求值操作

[注] 运算符与表达式之间一定要加空格

#假定变量a为10,变量b为20
+ `expr $a + $b`
- `expr $a - $b`
* `expr $a \* $b`
/ `expr $b / $a`
= a=$b
== [$a == $b]
!= [$a != $b]

关系运算符:

 关系运算符只支持数字,不支持字符串

-eq    检测两个数是否相等    [$a -eq $b]
-ne    检测两个数是否不相等   [$a -ne $b]
-gt    检测左边的数是否大于右边的    [$a -gt $b]
-lt    检测左边的数是否小于右边的    [$a -lt $b]
-ge    检测左边的数是否大于等于右边的    [$a -ge $b]
-le    检测左边的数是否小于等于右边的    [$a -le $b]

布尔运算符:

!    非运算
-o    或运算
-a    与运算

逻辑运算符:

&&    逻辑的and
||    逻辑的or

 字符串运算符:

=    检测两个字符串是否相等
!=    检测两个字符串是否不相等
-z    检测字符串长度是否为0,为0返回true
-n    检测字符串长度是否不为0
$    检测字符串是否不为空,不为空返回true

文件测试运算符:

Shell流程控制

if else:

if []
thenxxx
elif []
thenxxx
elsexxx
fi

for循环:

for var in item1 item2 item3 ... itemN
docommand1command2...commandN
done#写成一行
for var in item1 item2 ... itemN; do command1 command2 ... done;

while语句:

until语句:

case ...  esac语句:

#实例
site="runoob" 
case "$site" in"runoob") echo "菜鸟教程";;"Google") echo "Google 搜索";;"taobao") echo "淘宝网";;
esac

跳出循环还是有break和continue两种方式

Shell函数

function funname [()]
{action;return int;
}#function是可选的,可加可不加 return 也是可选的

Shell输入输出重定向

>    输出重定向
>>    追加输出重定向
<    输入重定向

Shell文件包含

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1558800.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

开源计算器应用的全面测试计划:确保功能性和可靠性

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

abc374 g

很容易想到建图&#xff0c;初始想法为&#xff0c;建完图后&#xff0c;求一个最小路径覆盖&#xff0c;但因为整个图不是DAG&#xff0c;所以需要缩点&#xff0c;但路径覆盖有两种说法&#xff0c;一种是最小不相交路径覆盖&#xff0c;另一种是最小可相交路径覆盖。 对于最…

Linux-更多的结构化命令

for命令 C语言风格的for语句 while命令 until命令 嵌套循环 循环处理文件数据 控制循环-break命令 控制循环-continue命令 处理循环输出 实例&#xff1a;查询可执行文件、创建多个用户账户

【华为OD机试真题】95、最少面试官数

package mainimport ("fmt""sort" )type s struct {start intend intworkCount int }type duration struct {start intend int }// 查询时间段内是否有可用的面试官 func getFreeS(sList []*s, d *duration, workCountLimit int) (sIndex int)…

DASCTF 2024暑期挑战赛wp

WEB 题目&#xff1a;Sanics revenge 解题步骤 首先看到给出的附件: from sanic import Sanic import os from sanic.response import text, html import sys import random import pydash # pydash5.1.2 # 这里的源码好像被admin删掉了一些&#xff0c;听他说里面藏有大秘密 c…

两个pdf怎么合并成一个pdf?超简单的合并方法分享

在日常工作和学习中&#xff0c;我们经常会遇到需要将多个PDF文件合并成一个文件的情况&#xff0c;以便更好地管理和分享。今天&#xff0c;将为大家详细介绍5种实用的方法&#xff0c;能够一键合并多个PDF文件&#xff0c;有需要的小伙伴快来一起学习下吧。 方法一&#xff1…

车牌字符识别系统源码分享

车牌字符识别系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

霍普菲尔德(Hopfield)神经网络求解旅行商问题TSP,提供完整MATLAB代码,复制粘贴即可运行

Hopfield神经网络是以美国物理学家约翰霍普菲尔德&#xff08;John Hopfield&#xff09;的名字命名的。他在1982年提出了这种类型的神经网络模型&#xff0c;因此通常被称为Hopfield网络。旅行商问题&#xff08;Traveling Salesman Problem&#xff0c;TSP&#xff09;是一个…

Linux文件权限与用户管理详解:权限、所属用户组和所有者的变更

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…

七氟烷麻醉药市场研究:未来几年年复合增长率CAGR为4.2%

七氟烷是一种吸入麻醉剂&#xff0c;用于在外科手术过程中诱导和维持全身麻醉。七氟烷是一种挥发性麻醉剂&#xff0c;常用于在外科手术过程中诱导和维持全身麻醉。它因起效快和作用消失快而受到青睐&#xff0c;是成人和儿科患者的理想选择。七氟烷通常通过吸入起作用&#xf…

考研报名记录冲冲冲

研究生报名 网址 https://yz.chsi.com.cn/apply/ 报名包括网上报名和网上确认两个阶段&#xff0c;所有考生均须在规定时间内参加网上报名和网上确认。网上报名时间为2024年10月15日至10月28日&#xff08;网上预报名时间为2024年10月9日至10月12日&#xff0c;网上预报名和正…

计算机中的BIOS是什么?BIOS设置界面怎么进入?

计算机术语中我们常说的BIOS是基本输入输出系统&#xff08;Basic Input & Output System&#xff09;的简称。它是一组固化在计算机主板上的ROM芯片中的程序&#xff0c;计算机启动时最早运行的软件之一。它保存着计算机最重要的基本输入输出的程序、开机自检程序和系统自…

wordpress使用popup弹窗插件的对比

您在寻找最好的 WordPress 弹出插件吗&#xff1f;大多数网站利用某种形状或形式的弹出窗口来将访问者指向他们希望他们去的地方。例如&#xff0c;这可能用于结帐、电子邮件订阅或用于生成潜在客户。 表现 弹出插件会减慢您的网站速度。当插件使用 WordPress 跟踪弹出窗口的…

SQL注入之报错注入方法汇总

报错注入 什么是报错注入 0.1 定义&#xff1a; 报错注入是通过特殊函数错误使用并使其输出错误结果来获取信息的。是一种页面响应形式。 响应过程&#xff1a; 用户在前台页面输入检索内容后台将前台页面上输入的检索内容无加区别的拼接成sql语句&#xff0c;送给数据库执…

VR科技云展如何以沉浸式体验引领科技成果新展示

一、VR科技云展的展示方式 VR科技云展通过虚拟现实技术&#xff0c;将展厅移植到虚拟空间中&#xff0c;使观众可以通过互联网在线参观展览。这种展示方式打破了时间和空间的限制&#xff0c;观众只需通过电脑、平板、手机等设备&#xff0c;就能随时随地体验展览。 1、沉浸式漫…

压缩图片最简单的方法有哪些?2024帮助你压缩出你需要的文件大小的软件

压缩图片最简单的方法有哪些&#xff1f;2024帮助你压缩出你需要的文件大小的软件 压缩图片可以帮助减少文件大小&#xff0c;从而更方便地进行存储、传输或上传到网站。以下是五款好用的图片压缩软件&#xff0c;它们能够帮助你快速、轻松地压缩图片至所需的文件大小。 万能图…

讲座在线预约管理系统的设计与实现使用SpringBootSSM框架开发

目录 摘要 1 引言 2 系统需求分析 3 技术选型 4 系统架构设计 5 核心功能实现 5.1 用户管理 5.2 讲座管理 5.3 预约管理 5.4 评论系统 6 安全性考虑 7 测试 8 结论 摘要 本文旨在设计和实现一个基于Spring Boot SSM框架的讲座在线预约管理系统&#xff0c;并结合…

makefile常见问题记录

1 Makefile:8 *** missing separator. Stop. 可能原因1&#xff1a;makefile的命令行开头必须使用Tab键 如图1所示&#xff0c;红框内为一个命令行&#xff0c;图2的缩进由敲空格实现&#xff0c;会标红&#xff0c;报错&#xff0c;图3的缩进为按Tab键&#xff0c;语法正确&…

YOLO11改进|卷积篇|引入轻量级自适应提取卷积LAE

目录 一、【LAE】卷积1.1【LAE】卷积介绍1.2【LAE】核心代码 二、添加【LAE】卷积机制2.1STEP12.2STEP22.3STEP32.4STEP4 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【LAE】卷积 1.1【LAE】卷积介绍 下图是【LAE】卷积的结构图&#xff0c;让我们简单分析一下运行过程…

指针式表盘指针关键部位分割系统源码&数据集分享

指针式表盘指针关键部位分割系统源码&#xff06;数据集分享 [yolov8-seg-LSKNet&#xff06;yolov8-seg-C2f-EMSC等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Gl…