linux shell编程规范和变量

news2024/12/24 22:15:11

 

 

 

 

一、shell简述

   概念:shell解释器,翻译官功能,与内核进行沟通的应用程序。

     把代码翻译为二进制,让内核处理,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。

  linux的shell:/etc/shells

  用户使用命令时,系统会检测这个文件得到内容,命令在里面才可以使用相关命令。

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

   

二、shell脚本

  shell脚本文件格式:.sh

  运行shell脚本命令:1.sh first.sh

            2.bash first.sh

            3.source first.sh

            4../first.sh(需要赋予权限)

  脚本的优点:

    1.自动化运维
    2.批量化重复操作可以编写脚本结合计划任务自动周期运行
    3.减轻管理员工作量
    4.提高处理文本文件的速度
    5.避免配置出错

  shell脚本格式:

    1.第一行默认:#!/bin/bash(不输入也是可以,shell脚本默认是有的)

    2.注释:shell脚本应该有注释

    3.可执行语句     

  shell脚本的运算:

  expr 可以一般用于整数值,也可用于字符串

  运算符:

  1.加法 +

  2.减法 -

  3.乘法 \ *

  4.除法 /(只会显示整数,除不尽为0)

  5.取余 (取模)%    

  运算法则:

  1.加法:num1 + num2

  2.减法:num1 - num2

  3.乘法:num1 \ * num2

  4.整除:num1 / num2

  5.取余(求模):num1 % num2 (求 num1 除以 num2 的余数)

  例子演示:

三、重定向

  1.< 重定向输入(从直到文件输入)

  2.> 重定向输出(直接覆盖直到文件内容)

  3.>> 重定向输出(直接将输出内容加入到直到文件尾部)

  4.2> 重定向错误输出(将错误信息保存到指定文件,覆盖)

  5.2>> 重定向错误输出(将错误信息保存到指定文件)

  6.&> 混合输出(将标准输出和错误输出都保存到同一个文件)

  例子演示:重定向输出

  重定向面试题:

    如何在不删除文件情况下,将文件清空:

四、管道符

  | :主要用在处理文本上,将管道符号“|”左侧的命令输出的结果,作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道。

  例子演示:将test1用户的密码改为123456

五、变量

  1.变量类型:1.字符串string(abc)

       2.整型int(1,2)

       3.浮点型(1.1)

       4.布尔型(0,1)

  2.变量命名规范:  

    1.不使用系统的命令作为变量名(例如:cd,ls)

    2.不使用中文作为变量名

    3.必要使用特殊符号。(下划线除外)

    4.要有注释

  3.自定义变量:由用户自己定义、修改和使用

  变量赋值:格式:变量名=变量值,变量命名规则:以字母或下划线开头,区分大小写

   4.引用变量:引用对应的值,格式:前面加$表示引用变量

   引用加双引号表示弱引用,表示变量的值

  引号加单引号表示强引用,表示变量本身,相当于字符串

  例子演示:

   反撇号表示引用命令执行结果,给变量赋值

   

  5.全局变量

    全局变量概念:在程序或脚本中定义的具有全局范围的变量。

          这意味着全局变量在整个程序或脚本的不同部分都是可见和可访问的,而不仅限于特定的函数、方法或代码块。

    (1)临时全局变量

        export 变量名=变量值

        例子:export a=1(所有登录用户可以使用)

    (2)永久全局变量

        /etc/profile修改配置文件

  

     优点:  

      1.全局范围

      2.持久性

      3.共享性

     副作用:

      1.相同变量名,直接引用全局变量,会导致不确定性,一般使用局部变量

  6.局部变量

    局部变量概念:默认情况下,新定义的变量只在当前的Shell环境中有效,因此称为局部变量。

            当进入子程序或新的子Shell环境时,局部变量将无法再使用。
            可以通过内部命令export将指定的变量导出为全局变量,使用户定义的变量在所有的子Shell环境中能够继续使用。

    (1)临时局部变量

        a=1

     (2)永久局部变量

        .bash_profile

  

  7.环境变量

    查看环境变量:env

    环境变量由系统提前创建,用来设置用户的工作环境

    PATH="$PATH:/root" #将/root目录添加到搜索路径

    将root添加到全局变量后,系统可以第一时间匹配root的文件

  例子演示:可以看到add.sh实在/root目录下的文件,切换到/opt后无法运行,但是将root目录加入环境变量,就可以运行

   8.位置变量

    是在运行脚本或程序时传递给它们的值。位置变量用于将外部数据传递给脚本或程序,以便根据需要进行处理。

  

 可以看到输入9个数,但num=第9为数和第2位置数相加

  9.预定义变量

    预定义变量:通常由编程语言或脚本解释器提供,并根据需要自动设置和更新,不能修改

    $#:表示传入多少个参数

    $@:把各个参数加上双引号分行处理,每个参数作为一个字符串返回

    $*:把所有参数看成以空格分隔的一个字符串整体(单字符串)返回

    $?:表示前一条命令或脚本执行后的返回状态码,返回值为0表示执行正确,返回任何非0值均表示执行出现异常。

  

    例子演示:

      1.$#

     2.$@加引号,可以整行输出

   

      

   将引号取消,分行显示:

  3.$@和$*加双引号表现一致

  

   4.$?表现判读是否成功

 六、shell脚本基本知识 

  1.read -p 获取输入内容

    -p prompt:指定提示符,用于提示用户输入数据。
 

   2.read -a 获取输入数组

    -a array:将输入数据存储到一个数组中。

七、预定义变量小实验

  1.判断两个数是否相等

   1代表错误

1

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

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

相关文章

功能上新| GPU篇:SoC GPU信息、GPU Counter性能指标

在玩家要求游戏更流畅、画质更精美的今天&#xff0c;优化GPU过度使用导致的性能问题成了大多数游戏开发团队关注的核心。当项目的GPU压力达到一定阈值时&#xff0c;卡顿、掉帧、发热、降频等问题便随之而来&#xff0c;严重影响用户体验。 为了解决项目的GPU压力问题&#x…

Kafka的常用命令

提前说明&#xff1a;下述所有命令都是需要进入到Kafka服务的的bin目录下执行&#xff0c;即下图所示目录。 1.查看主题列表 kafka-topics.sh --list --bootstrap-server ip:端口 2.创建主题 如下为创建一个单分区单副本的主题的命令示例&#xff1a; kafka-topics.sh --c…

Hack The Box - sequel关卡

TASK 1 任务 1 During our scan, which port do we find serving MySQL? 在扫描过程中&#xff0c;我们发现哪个端口为 MySQL 提供服务&#xff1f; 3306TASK 2 任务 2 What community-developed MySQL version is the target running? 目标运行的是哪个社区开发的MySQL版…

基于nodejs+Vue的少儿编程课程网上报名系统express+vscode

近年来&#xff0c;随着网络技术的不断发展&#xff0c;越来越多人在网站查询各种信息&#xff0c;少儿编程网上报名系统对用户和管理员都有很大帮助&#xff0c;少儿编程网上报名系统通过和数据库管理系软件协作来实现用户与管理员之间的一个很好的操作平台&#xff0c;基于这…

【大数据学习篇11】广告点击流实时统计

学习目标/Target 掌握广告点击流实时统计实现思路 掌握利用Kafka生产用户广告点击流数据 了解数据库设计 掌握如何创建Spark Streaming连接 掌握利用Spark Streaming读取业务数据 掌握利用Spark读取黑名单用户 掌握利用Spark Streaming过滤黑名单用户 掌握利用Spark St…

bug:使用useClipboard不生效问题

背景 使用vueuse/core的useClipboard来实现复制功能&#xff0c;没有生效。 原因 useClipboard 的底层是是使用navigator.clipboard实现的。但是在 http协议 中&#xff0c;navigator.clipboard打印undefined&#xff08;如下图&#xff09;&#xff0c;导致在http协议中使用…

旅行商问题TSP

目录 蚁群算法 Hopfield网络 遗传算法 免疫算法 蚁群算法 求解思路 Hopfield网络 Hopfield网络适合求结果的次优解&#xff0c;可以保证解向能量函数最小值方向收敛&#xff0c;但不能确保达到全局最小点。 实现能量函数 网格能量的最小值对应于最佳或者次最佳的路径距离。…

MySQL部署PXC集群-全网最详细

MySQL部署PXC集群 一&#xff0c;PXC了解 1.PXC介绍 Percona XtraDB Cluster&#xff08;简称PXC&#xff09; 是基于Galera的MySQL高可用集群解决方案 Galera Cluster是Codership公司开发的一套免费开源的高可用方案 PXC集群主要由两部分组成&#xff1a;Percona Server …

计算机网络开荒1-概述

文章目录 一、网络基本概述1.2 InternetInternet组成Internet服务角度 1.3 网络协议 二、计算机网络结构2.1 计算机网络结构2.1.1 网络边缘2.1.2 接入网络 物理介质2.1.2.1 DSL2.1.2.2 电缆网络2.1.2.3 家庭网络接入2.1.2.4 企业网络接入2.1.2.5 无线网络接入 2.1.3 网络核心 三…

肉豆蔻酰六肽-4 /myristoyl hexapeptide-4, sympeptide230

简介----肉豆蔻酰六肽-4 肉豆蔻酰六肽-4为胜肽系列应用最早和最广泛的多胜肽&#xff0c;国内外知名品牌普遍采用作为抗皱配方重要成分&#xff0c;在很多抗皱护肤产品中经常出现它的身影。它可以穿透真皮增加胶原蛋白&#xff0c;通过从内至外的重建来逆转皮肤老化的过程&…

感应雷电浪涌的防线,SPD浪涌保护器

SPD - Surge Protective Device SPD 是防止雷击导致故障的避雷器&#xff0c;代表浪涌保护设备。一般指浪涌保护器&#xff0c;浪涌保护器&#xff0c;也叫防雷器&#xff0c;是一种为各种电子设备、仪器仪表、通讯线路提供安全防护的电子装置。 IEC/ EN61643-11 &#xff08…

Vulkan Tutorial 8 深度缓冲

目录 26 三维几何图形 深度图像和视图 27 显式转换深度图像 渲染通道 帧缓冲区 清除值 深度和模版状态 处理窗口调整大小 26 三维几何图形 到目前为止&#xff0c;我们所处理的几何体是投射到三维的&#xff0c;但它仍然是完全平面的。在这一章中&#xff0c;我们要给位…

(学习日记)2023.4.22

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

【C++】关键字:static

关键字static 在这一章节&#xff0c;将对C中的关键字static做进一步介绍。 成员函数中的this指针 这里先附上之前写的一个complex类代码&#xff1a; //防卫式定义 #ifndef __MYCOMPLEX__ #define __MYCOMPLEX__//前置声明 class complex;//类声明 complex& __doapl (…

分享一个隐藏链接的样式

先上效果图&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>隐藏的链接按钮</title><style>.trapdoor {-webkit-transform: translateZ(0px);-webkit…

Unity Addressables热更流程

一、分组&#xff08;网上教程一大堆&#xff09; 二、构建 构建前设置&#xff1a; 1、分组设置。所有组做远端构建加载选择&#xff0c;RemoteBuildPath 。RemoteLoadPath 2、AddressableAssetSettings设置 3、构建 三、导出信息分析&#xff1a; 1、Assets同级目录下&#…

第十二届蓝桥杯国赛JavaB组题解

A. 整数范围 思路&#xff1a; 签到题。答案&#xff1a; 255 255 255 B. 纯质数 思路&#xff1a; 先用筛法筛出所有的质数&#xff0c;再根据题意判断&#xff0c;模板参考AcWing 数学知识。 代码&#xff1a; import java.io.BufferedReader; import java.io.IOExcepti…

Python相关环境变量配置和模拟手机app登录

【java环境变量配置】 接着&#xff0c;打开系统->高级系统设置->环境变量。新建一个JAVA_HOME C:\Program Files\Java\jdk1.8.0_201&#xff08;这里是你的安装路径&#xff0c;最好复制粘贴&#xff09; 然后在Path下添加 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 然后…

【LeetCode每日一题】——1493.删掉一个元素以后全为 1 的最长子数组

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 滑动窗口 二【题目难度】 中等 三【题目编号】 1493.删掉一个元素以后全为 1 的最长子数组 …

wx.request net::ERR_TOO_MANY_REDIRECTS

文章目录 问题解决方法一&#xff1a;请求头里添加Cookies方法二&#xff1a;使用weapp-cookie 问题 使用微信小程序开发者工具开发小程序项目时&#xff0c;wx.request 返回总是报 net::ERR_TOO_MANY_REDIRECTS wx.request发起一个get请求&#xff0c;一直重定向直到请求失败…