shell构建基本脚本

news2024/11/30 2:41:32

构建基本脚本

使用多个命令

一次使用多个命令,把它们放在一行,使用’;'隔开

[root@myserver ~]# date ; who; ls
Sun May 14 23:39:34 CST 2023
root     pts/0        2023-05-14 23:31 (192.168.10.1)
anaconda-ks.cfg  initial-setup-ks.cfg

创建shell脚本

创建shell脚本,必须在文件第一行指定要使用的shell:

#!/bin/bash

编写一个简单的脚本,第一行#!告诉shell使用哪里的shell来运行脚本,后面的#都是起注释作用

#创建一个临时目录用于测试
[root@myserver ~]# mkdir tmp
[root@myserver ~]# cd tmp
[root@myserver tmp]# vi tmp.sh
[root@myserver tmp]# cat tmp.sh
#!/bin/bash
date
who
ls

现在运行一下

[root@myserver tmp]# tmp.sh
bash: tmp.sh: command not found...

shell是通过PATH环境变量来查找命令,查看PATH环境变量

[root@myserver tmp]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

PATH变量被设置成只在一组目录中查找命令。要让shell找到tmp脚本,两种做法:

  • shell脚本所在目录添加到PATH环境变量中

  • 在提示符中使用绝对或相对文件路径引用shell脚本

使用单点操作符

[root@myserver tmp]# ./tmp.sh
-bash: ./tmp.sh: Permission denied

访问被拒绝,赋予文件执行权限

[root@myserver tmp]# ll
total 4
-rw-r--r--. 1 root root 24 May 14 23:47 tmp.sh
[root@myserver tmp]# chmod u+x tmp.
[root@myserver tmp]# ./tmp.sh
Mon May 15 00:06:10 CST 2023
root     pts/0        2023-05-14 23:31 (192.168.10.1)
tmp.sh
sh

显示消息

#一般输出字符不需要加引号,但如果出现单引号就需要双引号进行界定
[root@myserver tmp]# echo hello shell
hello shell
[root@myserver tmp]# echo let's see if this'll work
lets see if thisll work
[root@myserver tmp]# echo "let's see if this'll work"
let's see if this'll work

可以将echo语句添加到shell脚本中去,显示额外信息:

[root@myserver tmp]# cat tmp.sh
#!/bin/bash
echo The time and date are:
date
echo Who logged into the system:
who
echo Files in the current folder:
ls
[root@myserver tmp]# ./tmp.sh
The time and date are:
Mon May 15 00:18:26 CST 2023
Who logged into the system:
root     pts/0        2023-05-14 23:31 (192.168.10.1)
Files in the current folder:
tmp.sh

如果想把文本字符串和命令输出在同一行,使用echo

[root@myserver tmp]# cat tmp.sh
#!/bin/bash
echo -n  The time and date are:
date
echo Who logged into the system:
who
echo Files in the current folder:
ls
[root@myserver tmp]# ./tmp.sh
The time and date are:Mon May 15 00:26:57 CST 2023
Who logged into the system:
root     pts/0        2023-05-14 23:31 (192.168.10.1)
Files in the current folder:
tmp.sh

变量

环境变量

shell维护一组环境变量,用于记录特定系统信息。

set显示完整环境变量:

set

在脚本中可以使用’$'来使用这些环境变量

[root@myserver tmp]# cat test
#!/bin/bash
echo user info : $USER
echo uid : $UID
echo home : $HOME
[root@myserver tmp]# ./test
user info : root
uid : 0
home : /root

显示美元符号

[root@myserver tmp]# echo $15
5
[root@myserver tmp]# echo \$15
$15

用户变量

用户变量由用户定义,长度不超过20个,区分大小写

[root@myserver tmp]# cat test
#!/bin/bash
a=10
echo a val : $a
b=15
echo b val : $b
[root@myserver tmp]# ./test
a val : 10
b val : 15

退出脚本

Linux提供了专门的变量$?来保存上一个已执行命令的退出状态码

[root@myserver ~]# echo $?
0
[root@myserver ~]# abcd
bash: abcd: command not found...
[root@myserver ~]# echo $?
127

默认情况下,shell脚本会以脚本中最后一个命令的推出状态码推出


[root@myserver tmp]# cat test
#!/bin/bash
echo $(date)
[root@myserver tmp]# ./test
Mon May 15 13:27:30 CST 2023
[root@myserver tmp]# echo $?
0

状态码:
在这里插入图片描述

你可以改变这种默认,返回你自己的退出状态码

[root@myserver tmp]# cat test
#!/bin/bash
a=10
b=20
c=$[$a+$b]
exit $c
[root@myserver tmp]# ./test
[root@myserver tmp]# echo $?
30

当你设置状态码大于255时,shell就会模256余数


[root@myserver tmp]# cat test
#!/bin/bash
a=100
b=200
c=$[$a+$b]
exit $c
[root@myserver tmp]# ./test
[root@myserver tmp]# echo $?
44

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

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

相关文章

JavaScript学习-DOM事件进阶

事件流 事件流和两个阶段说明 事件流指的是事件完整执行过程中的流动路径 说明:假设页面里有个div,当触发事件时,会经历两个阶段,分别是捕获阶段、冒泡阶段 简单来说:捕获阶段是 从父到子 冒泡阶段是从子到父 或者说从大的往下的是捕获&am…

阿里云服务器如何安装宝塔面板?

使用阿里云服务器安装宝塔面板教程,阿里云服务器网以CentOS操作系统为例,安装宝塔Linux面板,先远程连接到云服务器,然后执行宝塔面板安装命令,系统会自动安装宝塔面板,安装完成后会返回面板地址、账号和密码…

前端有必要掌握TypeScript吗,答案十分肯定

本文首发自「慕课网」(www.imooc.com),想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"或慕课网公众号! 作者:一飞同学 | 慕课网讲师 近几年,前端技术发展越来越迅…

亚马逊云科技助力医疗与生命科学行业,提供高性能计算(HPC)

2023年4月27日,亚马逊云科技医疗与生命科学行业峰会召开。会议上,亚马逊云科技大中华区战略业务发展部总经理顾凡表示:“亚马逊云科技不仅提供覆盖全球的云基础设施以及超过200大类的云服务,更重要的是,我们深刻了解行…

Agisoft Metashape 卫星图像处理

Agisoft Metashape 利用卫星图像创建三维模型 文章目录 Agisoft Metashape 利用卫星图像创建三维模型前言一、添加图像二、对齐图像三、构建 DEM四、生成平铺模型前言 Agisoft Metashape Professional 支持处理带RPC参数的立体卫星图像。支持的卫星数据有:Beijing-3A, Ikonos…

Flash钓鱼->CS上线(免杀过火绒、360等)

先看结果 访问钓鱼页面: 点击立即升级即把马儿下载下来了 这个马儿是rar压缩的,做成的rar解压自启动,所以是个exe的文件,然后这里为了像一点,把图标给改了 双击运行,查看效果: 首先CS是没东西的 解压路…

UNITY3D 5V5网游开发案例教程

文章连载更新中,可以提前领取素材进行预习,自学 素材领取:私信发送 领取RPG网络开发教材 这里写目录标题 游戏玩法这门课适合哪些人学习学完了能达到什么效果项目准备基础系统战斗系统同步设计精讲社交系统副本系统优化项目准备正文美术准备&…

服务(第二十三篇)mysql-mha

1、什么是 MHA MHA(Master High Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障切换的过程中最大…

UnityWebSocket | 双端通信支持Text/Binary

跳转官方仓库地址 有多个项目使用该库,平台有PC、WebGL。 一、说明 1)原理 WebSocket是H5提供的一种浏览器与服务器进行全双工通讯的网络技术,属于应用层协议。数据通常在两个站(点对点)之间进行传输,按照…

动态规划:01背包理论基础 二维dp

1.确定dp数组以及下标的含义 对于背包问题,有一种写法, 是使用二维数组,即dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。[0-i]物品任取放到容量为j的背包中得到的最大价值为dp[i…

想要上手playwright?看这篇文章就够了!(文章有点长,建议收藏)

本文系统地介绍了playwright的基础概念,架构,安装过程,编码demo(python实例),常用API,录制脚本的方法以及playwright在无头模式的应用和其与selenium的对比。相信大家认真阅读本文后一定会对pla…

2023年5月广州/西安/成都/深圳产品经理认证NPDP报名

产品经理国际资格认证NPDP是新产品开发方面的认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会(PDMA)成立于1979年,是…

【数据结构】从头到尾全解析双向链表

在之前我们已经讲过< 单链表 >了,单链表查找上一个结点的时间复杂度为O&#xff08;n&#xff09;&#xff0c;尾插时也要遍历一次链表也是O&#xff08;n&#xff09;&#xff0c;因为我们每次都要从头开始遍历找,为了克服这单向性的缺点&#xff0c;我们就有了双向链表…

软件测试专业应届生应如何提高职场竞争力

一&#xff1a;巩固专业知识 背景&#xff1a;笔者已经做了几年的打工人&#xff0c;以个人经验给软件测试专业应届生一些建议。 推荐需要掌握的知识&#xff1a; 1、软件测试基础知识&#xff08;软件生命周期每个阶段工作需了解&#xff09; 2、熟悉SQL/MySQL/Oracle数据库&…

D8加密狗使用教程

D8 加密锁 1.VsCode 安装中文扩展包(1) 打开 VsCode&#xff0c;点击左侧扩展.(2) 输入Chinese&#xff0c;会自动搜索&#xff0c;点击第一个中文简体扩展&#xff0c;点击安装(3) 重启VsCode 2. D8调试服务程序 - 只运行3. 自动安装 yttool&#xff08;1&#xff09;VsCode 打…

杭钢集团:以用友iuap为数智底座的数智化转型之路

近日&#xff0c;一年一度的用友BIP技术大会圆满召开。来自行业领先企业的CIO/CDO、生态伙伴、开发者、分析师、媒体等共聚北京用友产业园&#xff0c;了解最新技术发展趋势、探讨行业热点话题。会上&#xff0c;杭钢集团总经理助理施永益分享了杭钢集团基于用友BIP-iuap平台推…

three.js学习 11 - threejs常用几何体,与几何体材质如何自定义

1.缓冲几何体&#xff08;立方体&#xff09; 官网API地址&#xff1a;https://www.three3d.cn/docs/index.html?qgeometry#api/zh/geometries/BoxGeometry 2.圆缓冲几何体 官网地址&#xff1a;https://www.three3d.cn/docs/index.html?qgeometry#api/zh/geometries/Cir…

ppt怎么压缩文件大小?试试这几种方法

ppt怎么压缩文件大小&#xff1f; PPT&#xff0c;也就是Microsoft PowerPoint演示文稿&#xff0c;是一种用于创建和展示演示文稿的软件工具。PPT的作用非常广泛。它可以用于各种场景中&#xff0c;以呈现信息、表达观点和传递思想。PPT可以将文字、图片、图表、动画等多种媒体…

程序员之间拉开差距最大的因素

本文为小红花技术领袖俱乐部创始人赖勇浩为《编程卓越之道》&#xff08;卷1&#xff09;所作序言。 拿到新一版《编程卓越之道》的第一卷《深入理解计算机》的稿子&#xff0c;心里非常感慨&#xff1a;上次读这本书&#xff0c;已经是16年前&#xff0c;还留下了幼稚的读后感…

1072. 按列翻转得到最大值等行数(leetcode,哈希)-------------------c++实现

1072. 按列翻转得到最大值等行数&#xff08;leetcode,哈希&#xff09;-------------------c实现 题目表述 给定 m x n 矩阵 matrix 。 你可以从中选出任意数量的列并翻转其上的 每个 单元格。&#xff08;即翻转后&#xff0c;单元格的值从 0 变成 1&#xff0c;或者从 1 …