首页 > 系统相关 >linux shell编程规范和变量

linux shell编程规范和变量

时间:2023-05-25 17:23:07浏览次数:49  
标签:脚本 输出 shell 变量 编程 sh linux 全局变量

目录

一、shell简述

二、shell脚本

三、重定向

四、管道符

五、变量

六、shell脚本基本知识 

七、预定义变量小实验

 

 

 

 

 

 

 

 

 

 

 

一、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.可执行语句  

三、重定向

  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代表错误

 

标签:脚本,输出,shell,变量,编程,sh,linux,全局变量
From: https://www.cnblogs.com/zhende/p/17430968.html

相关文章

  • Linux首次登录入与寻求帮助(Linux的简单使用)
    Linux首次登录入与寻求帮助一些Linux中使用的常用命令与技巧:进入终端系统方式(纯文本环境):按ctrl+alt+F2会进入tty2,同理F3~F7均可分别进入tty3~tty7,只有tty1是图形化界面(如果已经安装了图形界面了),在文本环境中按ctrl+alt+F1会进入图形化界面在文本模式注销......
  • Linux目录树与文件系统(挂载)
    Linux目录树与文件系统目录树结构(directorytree)目录树架构就是以根目录为主,然后向下呈现分支状的目录结构的一种文件架构。整个目录树最重要的就是那个根目录(rootdirectory),这个根目录的表示方法为一条斜线『/』,如图所示:目录树架构目录树与文件系统的关系目录树与磁......
  • Linux中Docker的搭建与应用
    1.Docker的安装[root@localhost~]#yuminstall-ydocker2.启动Docker,并设置开机自启动。[root@localhost~]#systemctlstartdocker[root@localhost~]#systemctlstatusdocker3.获取镜像并查看本地镜像[root@localhost~]#dockerpullwordpress[root@localhost~]#docke......
  • Linux安装Miniconda和换源
    1.Miniconda简介相比于Anaconda的臃肿,使用Miniconda是个不错的选择,Miniconda是一款小巧的python环境管理工具,安装包大约只有50M多点,其安装程序中包含conda软件包管理器和Python。2.Miniconda下载官方下载https://docs.conda.io/en/latest/miniconda.html清华镜像下载(......
  • 【编程日记】搭建PyCharm集成开发环境
    0.相关确定本教程使用的版本号为专业版PyCharm2022.3.2,如果您是初学者,为了更好的学习本教程,避免不必要的麻烦,请您下载使用与本教程一致的版本号。1.PyCharm的下载官网下载:https://www.jetbrains.com/pycharm/download/other.html百度网盘:链接:https://pan.baidu.com/s/1bBiVf0......
  • 【linux】记一次linux开机黑屏卡死排查
    背景:机器:红帽7.6问题:在安装docker后挂载盘后重启黑屏无法启动 排查过程:1、进入单用户模式2、排查发现fstable挂载有误,一个个判断是哪个磁盘挂载有误3、发现挂载没问题,但是一挂载上就无法启动4、尝试修改挂载路径,问题解决 问题根源:原先挂载路径中有程序被设置为开机自......
  • 走进Linux世界,学习Linux系统的必备指南
    随着计算机技术的不断发展,Linux操作系统已成为IT行业中备受关注的操作系统之一。Linux以其安全性、稳定性和开放性,受到了广泛的认可和欢迎。学习Linux系统对于IT行业的从业者来说是非常重要的。但是,对于初学者来说,学习Linux可能会感到有些困难。所以,我今天我打算给初学者们答疑解惑......
  • WebShell 特征分析
    WebShell特征分析作者:HaiCheng@助安社区,关注公众号领取学习路线和资料。​ WebShell是黑客经常使用的一种恶意脚本,其目的是获得服务器的执行操作权限,常见的webshell编写语言为asp/jsp/php。主要用于网站管理,服务器管理,权限管理等操作。使用方法简单,只需要上传一个代码文件,通过......
  • Linux (6) 磁盘扩容
    《WindowsAzurePlatform系列文章目录》 #先格式化磁盘sudosu-fdisk-lmkfs.xfs/dev/sdbblkidvi/etc/fstabUUID=4329a75b-ac40-4145-b0d5-1007e298b7ef/dataxfsdefaults,nofail00mkdir/datamount-adf-h#再扩容磁盘sud......
  • powershell脚本实现以指定的账户运行程序
    $uname="cnvwfs02\dkx4pxk"#指定用户名$pwd=ConvertTo-SecureString"Beijing2023!"-AsPlainText-Force#password”指定用户的密码$cred=New-ObjectSystem.Management.Automation.PSCredential($uname,$pwd)#将用户和密码保存在这个变量中Start-Process-FilePath......