Shell变成规范与变量

目录

1. Shell脚本

1.1 Shell脚本概述

1.2 Shell的作用 

1.3 Shell脚本的构成

2. 重定向与管道操作 

 2.1 交互式硬件设备

​ 2.2 重定向操作

3. shell变量

3.1 自定义变量

 3.2 变量的作用范围​编辑

3.3 整数变量的运算

4. 环境变量

4.1 特殊的Shell变量

4.2 只读变量 


1. Shell脚本

1.1 Shell脚本概述

(1)Shell脚本概念

(2)shell脚本应用场景

 

1.2 Shell的作用 

Shell的作用——命令解释器,“翻译官”

 介于系统内核与用户之间,负责解释命令行

 Shell(壳程序)是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。

查看系统中shell类型 

最常用的就是bash、tcsh、csh、sh、nologin这些shell

 

 /bin/bash和/bin/sh都是bash的软连接,都指向bash 

  • sh:已经被bash所替换,是bash的前身;

  • nologin:奇怪的shell,这个shell可以让用户无法登录主机;

  • bash(/bin/bash)是目前大多数Linux版本采用的默认Shell.

为什么系统上合法的Shell要写入/etc/shells这个文件呢? 

 这是因为系统某些服务运行过程中,会去检查用户能够使用的Shell,而这些shell的查询就是借由/etc/shells这个文件。

用户什么时候可以取得shell来工作?用户默认会取得哪一个shell? 

 当用户登录的时候,系统就会给我一个shell让我来用,而这个登录取得的Shell就记录在/etc/passwd这个文件内。

1.3 Shell脚本的构成

(1)脚本申明(解释器):若第一行为" #!/bin/bash",表示此行以下的代码语句是通过/bin/bash程序来解释执行,#!/bin/bash为默认解释器。还有其它类型的解释器,比如#!/usr/bin/python、#!/usr/bin/expect。

(2)注释信息:以“#”开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行。
 

1.4 编写Shell脚本 

(1)编写脚本代码 

 使用vim编辑器

(2)执行shell脚本 

 方法一:指定路径的命令,要求文件必须有x权限。

  • 指定绝对路径:/root/first.sh

  • 指定相对路径:./first.sh 

 方法二:指定shell来解释脚本,不要求文件必须有x权限。

sh 脚本路径: sh first.sh

source 脚本路径: . first.sh 或者 source first.sh

bash和sh命令执行脚本文件;

注意:指定路径以及sh、bash执行脚本的方式,会在子shell环境中运行,不会影响当前所在目录、变量的值等因素;而"."和source命令执行脚本的方式,是在当前shell环境中运行,会影响当前所在目录、变量的值 等因素。

2. 重定向与管道操作 

 2.1 交互式硬件设备

 2.2 重定向操作

 重定向输入:<,从指定文件读取数据

重定向输出:>,将输出结果保存到指定文件,会覆盖文件中原有内容

 

重定向追加:>>,将输出结果追加到指定文件的尾部,可以实现合并两个文件的效果 

 标准错误输出:2>,将错误信息保存到指定的文件中,会覆盖文件中原有的内容

混合输出:&>将代码正确执行的内容标准输出到指定文件中,或者将错误信息保存到指定文件 

混合输出的补充知识:(2>&1:将标准错误输出重定向到标准输出) 面试考试题

ls -lh > test.txt 2>&1    ls -ln 标准输出 到屏幕
ls -ln > test.txt 重定向输出到 text.txt  1 -->  test.txt
2>&1   错误输出 重定向到 标准输出

 3. shell变量

3.1 自定义变量

定义变量

 

下划线开头定义变量 

 

 题目:要求将$a和$b名字交换

解:准备一个临时变量$c,

 read -p "提示内容"  变量名           #从键盘输入中获取变量值

 

 `...`  $(...)    提取里面的命令执行后的结果

 3.2 变量的作用范围

 

 让自定义的变量在所有shell环境中有效的方法:

 1)在 /etc/profile 文件中定义 export 变量名=变量值
   source /etc/profile 立即生效 或 重新登录系统自动生效
 

 

2)在 /etc/bashrc 文件中定义 变量名=变量值
   切换 shell 环境自动生效

 

3.3 整数变量的运算

进行整数变量的运算 

echo $(expr 整数1 运算符 整数2)    $(expr $变量1 运算符 $变量2)                      +  -  \*  /  

 echo $[整数1 运算符 整数2]         $[变量1 运算符 变量2]           +  -  *  /  %   

 echo $((整数1 运算符 整数2))       $((变量1 运算符 变量2))         +  -  *  /  %   

 使用let关键字进行整数变量的运算(必须要赋予给变量值)

 浮点数运算

 方法一

方法二

4. 环境变量

4.1 特殊的Shell变量

 

 env 查看当前shell环境中所有可用的环境变量​​​​​​​

 echo $HOME:查看当前用户的家目录

4.2 只读变量 

readonly 变量名=变量值

 

4.3 位置变量 

 

 4.4 预定义变量 

 $?  代表的是上一条Linux命令执行的返回状态码(0~255)0表示上一条命令执行正确,非0值则表示上一条命令执行异常

$*  默认代表脚本后面跟的所有参数,加上双引号后 "$*" 会把所有参数看做一个整体
$@  默认代表脚本后面跟的所有参数,加上双引号后 "$@" 还是会把每个参数看做一个个体 

 

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

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

相关文章

鸿蒙开发接口Ability框架:【@ohos.application.formProvider (FormProvider)】

FormProvider FormProvider模块提供了卡片提供方相关接口的能力&#xff0c;包括更新卡片&#xff0c;设置卡片更新时间&#xff0c;获取卡片信息&#xff0c;请求发布卡片等。 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上…

机器人系统可以支持对接人工系统吗?

​ 随着科技的飞速发展&#xff0c;机器人系统在各行各业都扮演着越来越重要的角色。它们可以高效地处理大量数据&#xff0c;执行繁琐的任务&#xff0c;甚至在某些领域超越了人类的能力。然而&#xff0c;机器人系统也有其局限性&#xff0c;特别是在处理复杂的人际交往…

【Qt 开发基础体系】Qt信号与槽机制

文章目录 1.Qt 信号与槽机制原理&#xff08;Signal & Slot&#xff09;2. QObject 类 connect 的介绍3. 信号与槽机制连接方式4. 信号和槽机制优势及其效率&#xff1a;3. 信号与槽机制应用 1.Qt 信号与槽机制原理&#xff08;Signal & Slot&#xff09; &#x1f42…

Kafka---总结篇

kafka架构 主要概念 broker: 存储消息的机器 控制器controller &#xff08;1&#xff09;使用zookeeper&#xff0c; 除了提供一般的broker功能之外&#xff0c;还负责选举分区首领。通过在zookeepr中创建一个名为 /controller的临时节点称为 controller。每个选出的contro…

C# 和 Qt 相比的一些优势

C# 和 Qt 都是流行的软件开发工具&#xff0c;它们各自具有不同的优势&#xff0c;适用于不同的开发场景。以下是 C# 和 Qt 相比的一些优势。相比之下&#xff0c;Qt 也有其独特的优势&#xff0c;特别是在跨平台 GUI 应用程序开发方面。然而&#xff0c;C# 的这些优势使得它在…

Ubuntu22.04下安装kafka_2.11-0.10.1.0并运行简单实例

目录 一、版本信息 二、安装Kafka 1.将Kafka安装包移到下载目录中 2.下载Spark并确保hadoop用户对Spark目录有操作权限 三、启动Kafka并测试Kafka是否正常工作 1.启动Kafka 2.测试Kafka是否正常工作 一、版本信息 虚拟机产品&#xff1a;VMware Workstation 17 Pro 虚…

软件测试实战项目(含电商、银行、APP等)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 今天给大家带来几个软件测试项目的实战总结及经验&#xff0c;适…

初学python记录:力扣1652. 拆炸弹

题目&#xff1a; 你有一个炸弹需要拆除&#xff0c;时间紧迫&#xff01;你的情报员会给你一个长度为 n 的 循环 数组 code 以及一个密钥 k 。 为了获得正确的密码&#xff0c;你需要替换掉每一个数字。所有数字会 同时 被替换。 如果 k > 0 &#xff0c;将第 i 个数字用…

JUC下的ScheduledThreadPoolExecutor详解

ScheduledThreadPoolExecutor是Java并发编程框架中一个强大且灵活的线程池实现&#xff0c;专为定时与周期性任务而设计。作为ThreadPoolExecutor的子类&#xff0c;它不仅继承了线程池管理的高效与灵活性&#xff0c;还内置了基于优先级队列的延迟任务调度机制&#xff0c;支持…

基于模糊PI控制算法的龙格库塔CSTR模型控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于模糊PI控制算法的龙格库塔CSTR模型控制系统simulink建模与仿真。基于模糊PI控制算法的龙格-库塔&#xff08;Runge-Kutta, RK&#xff09;连续搅拌釜反应器&#xff08;Co…

景源畅信电商:抖音小店需要请专业人员装修店铺吗?

在数字营销的海洋中&#xff0c;抖音小店如一艘航船&#xff0c;装修得当才能吸引顾客登船。那么&#xff0c;小店是否需要请专业人员来装修呢?答案是肯定的。 一、视觉冲击力是关键 专业设计师擅长运用色彩、布局与图像创造出强烈的视觉冲击力&#xff0c;这对于抓住用户的注…

2024vue官方生态最全整理

👩 个人主页:程序媛夏天 🙋‍♂️ 作者简介:前端领域新星创作者、CSDN内容合伙人、自媒体职场博主,专注于前端各领域技术,成长的路上共同学习共同进步,一起加油呀! ✨系列专栏:前端面试宝典、JavaScript进阶、vue实战 📢 资料领取:前端进阶资料以及文中源码可以在…

【四、性能测试】性能测试基础与几个重要的概念

你好&#xff0c;我是山茶&#xff0c;一个95后在职程序员。也是一个目标跟 1000 程序员探索出 AI 测试 副业之路的 bro&#xff0c;欢迎跟我一起沟通交流&#xff01; 一、什么是性能测试&#xff1f; 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来…

【Linux——Centos7安装RabbitMQ】 RabbitMQ无法连接

到这一步是基本已经装好了&#xff0c;现在是在开放端口&#xff0c;我这个报错是因为我的防火墙是处于关闭状态&#xff0c;所以在开放端口时会报防火墙为运行&#xff0c;把防火墙打开&#xff0c;在开放端口&#xff0c;就可以访问到了 重启防火墙&#xff1a; systemctl …

MATLAB的Bar3函数调节渐变色

一. colormap函数 可以使用colormap函数: t1=[281.1,584.6, 884.3,1182.9,1485.2; 291.6,592.6,896,1197.75,1497.33; 293.8,596.4,898.6,1204.4,1506.4; 295.8,598,904.4,1209.0,1514.6];bar3(t1,1) set(gca,XTickLabel,{300,600,900,1200,1500},FontSize,10) set(gca,YTic…

常见C语言基础题说明一

一. 简介 整理一些C语言常见的基础笔试题。 假如系统是 32位计算机的情况下&#xff0c;字节对齐方式为 4字节对齐。计算如下题目。 二. 常见C语言基础笔试题 1. 计算 sizeof(数组名)&#xff0c; sizeof(指针)&#xff0c;strlen(数组名) 大小 计算如下的变量的值&…

npm无法安装node-sass 的问题

安装 node-sass 的问题呈现&#xff1a;4.9.0版本无法下载 Downloading binary from https://github.com/sass/node-sass/releases/download/v4.9.0/win32-x64-72_binding.node Cannot download "https://github.com/sass/node-sass/releases/download/v4.9.0/win32-x64-…

技术速递|介绍 .NET MAUI 社区工具包 v8 :包含 TouchBehavior 支持!

作者&#xff1a;Gerald Versluis 排版&#xff1a;Alan Wang .NET MAUI 社区工具包团队很自豪地向您介绍 .NET MAUI 社区工具包的第 8 版&#xff01; 在这个最新的主要版本中&#xff0c;我们为您带来了备受期待的 TouchBehavior&#xff08;以前称为 TouchEffect&#xff0…

MM模块学习一(供应商创建,物料类型的定义及功能)

物料管理流程&#xff1a; 源头&#xff1a;采购需求->采购申请 MRP&#xff1a;物料需求计划。运行物料需求计划的结果&#xff0c;根据物料的性质来判断是外购&#xff08;采购申请&#xff09;或者是生产&#xff08;计划订单->生产订单&#xff09;。 采购申请&am…

在Linux中安装Docker

如果之前安装过旧版本的 Docker&#xff0c;可以使用下面命令卸载&#xff1a; yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine…