Linux进阶-Shell编程与环境变量

news2024/11/24 7:06:41

目录

定义变量:

使用变量:

将命令的结果赋值给变量:

删除变量:unset

退出当前进程:exit

读取从键盘输入的数据 :read

对整数进行数字运算:(())

逻辑与或:

检测某个条件是否成立:

管道(可将两个或多个命令连接在一起,上一个命令的输出信息会作为下一个命令的输入信息):command1 | command2

if语句 

if else语句

if elif else语句

 case in语句

for in循环 

while循环

函数


Shell脚本(shell命令按一定语法组成的文件)作用:

软件启动;

性能监控;

日志分析;

...

shell命令本质:内置命令/外部命令(应用程序)。(可由type <command>判断)

例如:创建一个hello的c文件,意在终端输出hello world。然后编译这个c文件(gcc hello.c -o hello),然后把hell移动到/usr/bin/。

当向终端输入hello时,终端输出hello world。这个c文件就成了shell的外部命令。

常用的shell解释器:/etc/shells

shell脚本常用后缀名:.sh

Shell启动方式

当程序运行(./)

指定解释器运行(/bin/bash)

source和.

Shell脚本语法

定义变量:

variable=value

variable='value'(符号内不做逻辑判断)

variable="value"。 

使用变量:

$variable

${variable}

将命令的结果赋值给变量:

variable=`command`

variable=$(command)

删除变量:unset

特殊变量描述
$0当前脚本的文件名
$n(n>=1)传递给脚本或函数的参数。n是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2
$#传递给脚本或函数的参数个数
$*传递给脚本或函数的所有参数
$@传递给脚本或函数的所有参数。当被双引号“”包含时,$@与$*稍有不同
$?上个命令的退出状态或获取函数返回值
$$当前Shell进程ID。对于Shell脚本,就是这些脚本所在的进程ID

退出当前进程:exit

读取从键盘输入的数据 :read

对整数进行数字运算:(())

逻辑与或:

command1&&command2

command1||command2

检测某个条件是否成立:

test expression

[ expression ]

选项描述
-eq判断数值是否相等
-ne判断数值是否不相等
-gt判断数值是否大于
-lt判断数值是否小于
-ge判断数值是否大于等于
-le判断数值是否小于等于
-z str判断字符串str是否为空
-n str判断字符串str是否为非空
=和==判断字符串str是否相等
-d filename判断文件是否存在,并且是否为目录文件
-f filename判断文件是否存在,并且是否为普通文件

管道(可将两个或多个命令连接在一起,上一个命令的输出信息会作为下一个命令的输入信息):command1 | command2

if语句 

if condition
then
    statement(s)
fi

if else语句

if condition
then
    statement1
else
    statement2
fi

if elif else语句

if condition1
then
    statement1
elif condition2
then
    statement2
...
else
    statement
fi

 case in语句

case expression in
    pattern1)
        statement1
        ;;
    pattern2)
        statement2
        ;;
    pattern3)
        statement3
        ;;
......
            *)
        statementn
        ;;
esac

for in循环 

for variable in value_list
do
    statements
done

value_list:

直接给出具体的值;

给出一个取值范围;

使用命令的执行结果;

使用Shell通配符;

使用特殊变量。

 

while循环

while condition
do
    statements
done

  

函数

function name(){
    statements
    [return value]
}

全局变量:直接定义,只能在当前的shell进程里访问,但其它进程以及shell进程的子进程是不能访问的。

环境变量:export,能在当前的shell进程以及shell进程的子进程访问,但其它进程是不能访问的。

shell进程每次启动时,它都会执行shell配置文件的代码来做一些初始化的工作。 

如果我们将shell变量的定义放到shell配置文件的话,shell进程一启动,就回去定义这些变量。

与Bash Shell有关的配置文件主要有:

/etc/profile

~/.bash_profile

~/.bash_login

~/.profile

~/.bashrc

/etc/bashrc

/etc/bash.bashrc

/etc/profile.d/*.sh

Shell执行顺序:/etc/profile、~/.profile(~/.bash_profile、~/.bash_login)

 

全部用户、全部进程共享:/etc/bash.bashrc

一个用户、全部进程共享:~/.bashrc

shell启动方式对变量的影响

shell子进程中执行:/bin/bash和./

当前进程中执行:source和.

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

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

相关文章

【Java八股文总结】之MySQL数据库

文章目录数据库一、基本概念二、MySQL数据库2.1 MySQL基础1、MySQL数据库的优点&#xff1f;2、MySQL支持的数据类型有&#xff1f;Q&#xff1a;varchar 和 char 的区别&#xff1f;Q&#xff1a;blob 和 text 的区别&#xff1f;Q&#xff1a;datetime 和 timestamp 的区别&a…

DI依赖注入-P8,P9,P10,P11

1.构造器注入 之前写过了~~~~ 2.Set方式注入【重点】 3.拓展方式注入 2.Set方式注入【重点】 【环境搭建】 1.复杂类型 2.真实测试对象 四个文件 Student实体类的创建&#xff1a; 主要是依据官方文档来建立。那个Address也是为了测试不同的类型&#xff0c;而创建的引…

攻防世界misc2-1

misc2-1 题目描述&#xff1a;无 题目环境&#xff1a;https://download.csdn.net/download/m0_59188912/87094620 打开图片&#xff0c;发现无法显示。 使用winhex打开&#xff0c;从其中一段看出这是逆序图片。 使用python脚本将其正序排列。 脚本源码&#xff1a; f1open(‘…

5G无线技术基础自学系列 | SA及NSA组网架构

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 3GPP为新空中接口定义了两种部署配置&a…

操作系统笔记

文章目录一、操作系统的定义1.1 操作系统的功能和目标1.2 操作系统的特征1.3 操作系统的发展和分类1.4 操作系统的运行机制1.5 操作系统内核1.6 操作系统的体系结构二、中断机制中断和异常三、系统调用3.1 系统调用的分类&#xff08;按功能分配&#xff09;3.2 系统调用和库函…

整夜我的背影是一条踏往星空的道路

Brigit Pegeen Kelly&#xff0c;1951 - 2016.08.14&#xff0c;美国诗人、教师&#xff0c;在加利福尼亚州帕洛阿尔托出生&#xff0c;在印第安纳南部长达&#xff0c;成年后的大部分时间都在伊利诺州中部度过。一位非常注重隐私的女性&#xff0c;她的生活很少为人所知。[1][…

计算机基础学习(好文必看)

好长时间没发文章了&#xff0c;主要是以输入为主。 那么&#xff0c;给小伙伴们推荐一些计算机基础学习的知识&#xff0c;自己感觉挺不错的。 计算机基础学习&#xff1a; 1. 小林师傅是一位宝藏博主&#xff0c;非常厉害&#xff0c;各大平台都有他的文章&#xff0c;我是…

Day08--自定义组件的样式

提纲挈领&#xff1a; ************************************************************************************************************ 我的操作&#xff1a; 1》在app.wxss里面定义一个全局样式&#xff1a; 2》在home.wxml里面使用全局样式。 3》在test2.wxml里面使用…

Prometheus系列(一)安装

1 安装 Prometheus Server 官网&#xff1a;https://prometheus.io/ 下载&#xff1a;https://prometheus.io/download/ 手册&#xff1a;https://prometheus.io/docs/introduction/overview/ Prometheus 基于 Golang 编写&#xff0c;编译后的软件包&#xff0c;不依赖于任何的…

如何画业务流程图?

业务流程图是用来描述客户业务作业方式的有效手段&#xff0c;它可以清晰地客户业务流程中涉及的人员角色、业务活动、业务数据以及他们之间的关系&#xff0c;是用来澄清需求的有效手段。一个典型的业务流程图如下图所示&#xff1a; 在画业务流程图时有哪些注意事项呢&#x…

分布式协调服务

服务越来越对&#xff0c;人工管理和维护服务及地址的配置地址信息会越来越困难&#xff0c;单点故障的问题也凸显出来。一旦服务路由或者负载均衡服务器宕机&#xff0c;依赖他的所有服务均将失效。 什么是 zookeeper&#xff1f; zookeeper 是一个开源的分布式协调服务。zoo…

【乱码】记一次C#调用Java乱码

项目是使用 C# 写的&#xff0c;传输数据使用对方给的Java加密解密算法。直接使用C#写算法要研究对方的算法&#xff0c;耗时较长。 因此直接将jar包转成dll进行调用。 前言 使用IKVM工具将Java生成的Jar包转成dll&#xff0c;使用C#进行调用&#xff0c;可以正常调用&#xff…

Java-10接口与抽象类

Java-10接口与抽象类 抽象方法 abstract method机制 这是一个不完整的方法&#xff0c;它只有一个声明&#xff0c;没有方法体 abstract void f();包含抽象方法的类被称为抽象类&#xff1a;如果一个类包含一个或多个抽象方法&#xff0c;则该类必须被定义为抽象类 public…

CEAC 之《企业信息化管理》3

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;微微的猪食小窝 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 微微的猪食小窝 原创 收录于专栏 【CEAC证书】 1综合布线属于系统集成的____________。 A、网络应用系统 B、应用基础平台 C、网络平台 D、…

JavaEE 几种spring注解

使用注解可以更简单的存储Bean对象和读取Bean对象。 存储Bean对象 在使用注解之前&#xff0c;需要做一些前置工作&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"…

01- mysql基础

MySQL基础 今日目标&#xff1a; 完成MySQL的安装及登陆基本操作能通过SQL对数据库进行CRUD能通过SQL对表进行CRUD能通过SQL对数据进行CRUD 1&#xff0c;数据库相关概念 以前我们做系统&#xff0c;数据持久化的存储采用的是文件存储。存储到文件中可以达到系统关闭数据不会…

Dendro Azide-PEG-Dendro Azide,Dendro N3-PEG-Dendro N3,PEG超支化树状叠氮

1、名称 英文&#xff1a;Dendro Azide-PEG-Dendro Azide&#xff0c;Dendro N3-PEG-Dendro N3 中文&#xff1a;聚乙二醇-超支化树状叠氮 2、CAS编号&#xff1a;N/A 3、所属分类&#xff1a;Azide PEG 4、分子量&#xff1a;可定制&#xff0c;Dendro Azide-PEG 20K-Den…

【暴力更换OPPO启动器为其它三方(Nova Launcher in my Case Scenario)】

狠搞更换OPPO启动器为三方&#xff08;Nova&#xff09; 我咋就不知道狮子座也有这么强烈的强迫症呢&#xff1f;&#xff01; 我每次玩儿新手机必须得搞搞应用图标呀壁纸呀啥的&#xff0c;必须得打上你“磊哥”的风格烙印。但是国内的启动器的通病就是用不了三方的app图标包…

针对小程序的漏洞挖掘

0x00 前言 我们对小程序的漏洞挖掘&#xff0c;关注点还是在逻辑漏洞上面&#xff0c;下面将从环境搭建到实例一步步讲解。&#xff08;此篇文章更适合做安服的老哥们看&#xff09; 0x01 环境配置 工具&#xff1a;BurpFiddlerwindows版本微信 注: 你也可以直接用burpwindo…

面试笔试题之Linux部分58题(第一部分)

1、Linux常用的发行版 debian、Fedora、Ubuntu、redhat、centOS 等补充&#xff1a; Fedora&#xff1a;软件新&#xff0c;不稳定 redhat&#xff1a;稳定、收费 centOS&#xff1a;稳定、免费 2、在Linux里面查看指定时间段的日志文件 sed -n‘/起始时间/,/结束时间/p’ 日…