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值则表示上一条命令执行异常

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

二总线,替代传统485总线通讯,主动上报方案简易实现方法

二总线通信设计专栏 《二总线&#xff0c;替代传统485总线通讯&#xff0c;选型及应用-CSDN博客》《二总线&#xff0c;替代传统485总线通讯&#xff0c;低成本直流载波方案实现及原理-CSDN博客》《二总线&#xff0c;替代传统485总线通讯&#xff0c;调试避坑指南之最大的电流…

基于springboot+mybatis+vue的项目实战之前端

步骤&#xff1a; 1、项目准备&#xff1a;新建项目&#xff0c;并删除自带demo程序&#xff0c;修改application.properties. 2、使用Apifox准备好json数据的mock地址 3、编写基于vue的静态页面 4、运行 整个的目录结构如下&#xff1a; 0、项目准备 新建项目&#xff0…

G 2024-05-09 开源项目日报Top10

根据Github Trendings的统计,今日(2024-05-09统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目6C++项目2TypeScript项目2Jupyter Notebook项目1Lua项目1JavaScript项目1Dify.AI: 开源的LLM应用程序开发平台 创建周期:299 天开发…

22 内核开发-宏内核,微内核探秘

22 内核开发-宏内核&#xff0c;微内核探秘 目录 22 内核开发-宏内核&#xff0c;微内核探秘 1.宏内核 2.宏内核优点 3.宏内核缺点 4.为什么选择宏内核 5.微内核 6.微内核优缺点 7.总结 今天看书&#xff0c;看到一个知识点&#xff1a; 《深入linux内核架构》第7章…

ffmpeg ubuntu18.04编译报错fcntl64

fcntl&#xff0c;fcntl64均是系统的api提供的文件操作&#xff0c;fcntl64本来是用来解决操作大文件的问题&#xff0c;后面fcntl本身已经解决了这个问题&#xff0c;fcntl64就被舍弃了 系统环境信息&#xff1a; ubuntu 18.04 root# cat /etc/issue Ubuntu 18.04.6 LTS \n…

java数据结构之数组系统了解

1.数组介绍 数组就是一个存储数据的容器&#xff0c;容器的长度固定、存储元素的数据类型固定。 跟变量加以区分&#xff1a;变量也可以存储数据&#xff0c;但是只能存一个值。当要存的数据比较多的时候&#xff0c;用变量就不方便了。我们就可以使用数组来存储。 1.1数组…

部分设计模式概述

单例模式 工厂模式 适配器模式 模板方法模式 策略模式 责任链 观察者模式&#xff08;又叫发布订阅模式&#xff09;

【项目学习01_2024.05.08_Day06】

学习笔记 5 新增课程5.1 需求分析5.1.1 业务流程5.1.2 数据模型 5.2 接口定义5.3 接口开发5.3.1 保存课程基本信息5.3.2 保存营销信息 5.4 接口测试 5 新增课程 5.1 需求分析 5.1.1 业务流程 5.1.2 数据模型 5.2 接口定义 5.3 接口开发 根据需求分析&#xff0c;新增课程表…

集成学习案例-幸福感预测

集成学习案例一 &#xff08;幸福感预测&#xff09; 背景介绍 此案例是一个数据挖掘类型的比赛——幸福感预测的baseline。比赛的数据使用的是官方的《中国综合社会调查&#xff08;CGSS&#xff09;》文件中的调查结果中的数据&#xff0c;其共包含有139个维度的特征&#xf…

特定消谐技术:SHEPWM调制方法

简介 特定消谐技术是通过计算PWM波的开关时刻&#xff0c;消除特定的低阶谐波。其基本理论是恰当地控制逆变器脉宽调制电压的波形&#xff0c;通过脉宽平均法把逆变器输出的方波电压转换成等效的正弦波&#xff0c;以消除某些特定的谐波。本文对特定谐波消除方法的基本原理进行…

新书速览|Rust编程与项目实战

掌握Rust编程基础和开发方法&#xff0c;实战网络编程、图像和游戏开发、数据分析项目 本书内容 Rust是一门系统编程语言&#xff0c;专注于安全&#xff0c;尤其是并发安全&#xff0c;它也是支持函数式、命令式以及泛型等编程范式的多范式语言。标准Rust在语法和性能上和标准…

前端项目加载离线的百度地图,利用工具进行切指定区域的地图影像,自定义图层getTilesUrl

百度地图在开发中我们经常使用&#xff0c;但是有些项目是需要在内网进行&#xff0c;这时候我们不得不考虑项目中一些功能需要请求外网静态资源&#xff0c;比如百度地图。只有把包下载到本地&#xff0c;才能让静态资源文件的正常的访问。 目录 获取百度地图开发秘钥 引入在…

OpenSPG docker 安装教程

文章目录 前言自述 一、OpenSPG1.介绍 二、安装步骤1.安装服务端2.客户端部署 前言 自述 我最近是想结合chatglm3-6b和知识图谱做一个垂直领域的技术规范的问答系统&#xff0c;过程中也遇到了很多困难&#xff0c;在模型微调上&#xff0c;在数据集收集整理上&#xff0c;在知…

Golang | Leetcode Golang题解之第69题x的平方根

题目&#xff1a; 题解&#xff1a; func mySqrt(x int) int {if x 0 {return 0}C, x0 : float64(x), float64(x)for {xi : 0.5 * (x0 C/x0)if math.Abs(x0 - xi) < 1e-7 {break}x0 xi}return int(x0) }

大数据之Hue中运行Sqoop常见的问题分析

Hue提供执行Sqoop命令的功能。 使用方法 与在终端执行Sqoop命令不同&#xff0c;在Hue中执行Sqoop命令&#xff0c;应该直接使用Sqoop的一级子命令。Sqoop在终端和Hue执行的区别 在终端执行 sqoop import \ --connect jdbc:oracle:thin:10.100.144.152:1521/ORACLE_DB \ --use…

Web API之DOM

DOM 一.认识DOM二.获取元素三.事件基础四.操作元素(1).改变元素内容(2).修改元素属性(str、herf、id、alt、title&#xff09;(3).修改表单属性(4).修改样式属性操作(5).小结 五.一些思想(1).排他思想(2).自定义属性的操作 六.节点操作1.认识2.节点层级关系3.创建和添加、删除、…

电子硬件设计-Xilinx FPGA/SoC前期功耗评估方法(1)

目录 1. 简介 2. 使用方法 2.1 设计输入 2.2 查看结果 3. 额外说明 4. 总结 1. 简介 XPE (Xilinx Power Estimator, 功耗估算器) 电子表格是一种功耗估算工具&#xff0c;用于项目的预设计和预实现阶段。 该工具可以帮助工程师进行架构评估、器件选择、合适的电源组件以…

SpringCloudAlibaba:4.3云原生网关higress的JWT 认证

概述 简介 JWT是一种用于双方之间传递安全信息的简洁的、URL安全的声明规范。 定义了一种简洁的&#xff0c;自包含的方法用于通信双方之间以Json对象的形式安全的传递信息&#xff0c;特别适用于分布式站点的单点登录&#xff08;SSO&#xff09;场景 session认证的缺点 1.安…

liunx命令行 带颜色

for i in {1..49}; do echo -e "\033[;${i}m 这是${i}的效果 oldboy\E[0M"; done

如何彻底将CAD或者Cadence卸载干净

最近因为升级软件需要先彻底删除这两个软件&#xff0c;发现无论如何都不能卸载干净&#xff0c;于是乎找到这样一个软件帮助卸载或查找剩余的软件残留&#xff1a; 官网&#xff1a;https://geekuninstaller.com 支持软件和 UWP 应用的卸载&#xff0c;查看软件注册表和安装目…