当前位置: 代码网 > it编程>前端脚本>Powershell > shell编程规范与变量详解

shell编程规范与变量详解

2025年05月18日 Powershell 我要评论
shell脚本概述shell可以批量处理,自动化完成一系列维护任务,避免大量重复性输入,交互操作等。shell作用shell是一个特殊的应用程序(在linux中),介于操作系统内核与用户之间,担任&r

shell脚本概述

shell可以批量处理,自动化完成一系列维护任务,避免大量重复性输入,交互操作等。

shell作用

shell是一个特殊的应用程序(在linux中),介于操作系统内核与用户之间,担任’命令解释器‘的角色,主要负责用户输入命令(解释),将需进行的操作传递给内核(输出结果)。

shell解释器有很多种,使用不同的shell时,其内部的指令,特殊符号会有区别。

编写第一个shell脚本

bash是目前使用最多(linux默认)的shell。shell脚本将要执行的命令放入一个脚本中,赋予其权限即可。

执行vim aaa.sh构建并编辑脚本

如要执行./aaa.sh需赋予权限。(bash ,source则无需)

执行脚本

重定向与管道操作

shell脚本具有批量处理的特性,大部分指令都是默认进行,因此提取,过滤执行信息非常重要。

重定向操作

linux系统使用文件来描述硬件设备等资源(硬板,分区等设备文件),用户提供操作系统处理的信息过程中,主要包括3类交互设备文件。

默认设备文件编号
标准输入键盘0命令将从标准输入文件中读取在执行过程中需要输入的数据。
标准输出显示器1命令将执行后的输出结果发送到输出文件
标准错误显示器2命令将执行时的各种错误信息发送到标准错误文件

重定向输出

是指将命令的正常输出结果保存到指定文件中(不显示在显示的屏幕上)(>/>>用于覆盖和追加文件)。

重定向输入

指将命令在接收接受的途径由默认改成指定文件,不等待从键盘输入。

交互式操作过程可以通过重定向输入以读取文件的方式来完成。

执行添加初始密码串“123456”

非交互式命令语句可以更方便的在shell脚本中使用,从而大大减少程序被打断的过程,提高脚本执行的效率。

错误重定向

将执行命令时的错误信息保存到指定文件上而不是屏幕上。

管道操作

管道操作为不同命令之间提供了一种机制。位于|左侧命令作为输出结果,将右侧命令作为输入(处理对象),一行命令可以有多个|符。

shell变量作用,类型

shell变量用来存放系统和用户需要使用的特定参数,这些参数可以根据用户的设定或系统变化而相应变化,shell程序能够提供更加灵活功能,适应性更强。

自定义变量

自定义变量是由系统用户自己定义的变量,只在用户自己的shell环境中有效,因此又称为本地变量。

定义新变量

bash中变量相对简单没有那么复杂,在定义一个新变量时,一般无需提前声明,直接指定变量名称给初始值即可(内容)。

查看引用变量值

在变量前加$可以引用一个变量值,使用echo查看变量,一条命令可以使用echo查看多个变量值。

当变量名称和紧跟其他的其他字符混淆时,使用{}将其隔开,否则将无法确定正确的变量名称。

变量赋值特殊操作

双引号(")

双引号起界定字符串的作用,特别是当赋值内容包括空格时,必须用"括起来,其他情况下"可以省略。

在"范围内使用$可以引用其他变量值(变量引用),从而能够直接调用现有变量的值给新的变量。

单引号(‘)

当赋值包括/$等特殊符号时,应用单引号括起来。在单引号范围内任何字符都将被当作普通字符看待,而且无法引用其他变量的值。

反撇号(`)

主要用于命令替换,允许将执行某个命令的屏幕输出结果赋值给变量。`号内必须是可以执行的命令,不然将会出错。

使用反撇号难以在一行命令中实现嵌套命令替换操作,这时可以己使用"$()"来代替`号操作,以解决嵌套的问题。

read命令

bash内置命令可以使用read来变量赋值。read命令用来提示用户输入信息,从而实现简单的交互过程。

[root@localhost~]# read todir1
/opt/backup/
[root@localhost ~]# echo $todir1
/opt/backup/

以便使交互式操作界面更加友好,提高易用性,read命令可以结合"-p'选项来设置提示信息,以便告知用户应该输入什么内容等相关事项。

[root@localhost~]#read-p"请指定备份存放目录:"todir22
请指定备份存放目录:/opt/backup
[root@localhost ~]#_echo $todir2
/opt/backup

设置变量作用范围

默认情况下,新定义的变量只在当前的shell环境中有效,因此称为局部变量。当进入子程序或新的子shell环境式,局部将无法再使用。

为了使用户定义的变量在所有的子shell环境中能够继续使用,减少重复设置工作,可以通过内部,命令export将指定的变量导出为全局变量。

使用export导出全局变量的同时,也可以为变量进行赋值,这样在新定义全局变量时就不需要提前进行赋值了。

数值变量运算

shell变量的数值运算多用于脚本程序的过程控制。

  • +加法运算。
  • -:减法运算。
  • \*:乘法运算,注意不能仅使用"*"符号,否则将被当成文文件通配符
  • /:除法运算。
  • %:求模运算,又称为取余运算,用来计算数值相除后的余数。

若要将运算结果赋值给其他变量,可以结合命令替换操作(使用反撇号)。

特殊shell设置

除了用户自行定义的shell变量以外,在linux系统和bash shell环境中还有一系列的特殊变量:环境变量,只读变量,位置变量,预定义变量。

环境变量

环境变量指的是出于运行需要而由linux系统提前创建的一类变量,主要用于设置用户的工作环境,,包括用户宿主目录,命令查找路径,用户当前目录,登录终端等。

path变量用于设置可执行程序的默认搜索路径,当仅指定文件名称来执行命令程序时,linux系统

将在path变量指定的目录范围查找对应的可执行文件,如果找不到则会提示"command not found"

[root@localhost ~]# ls -lh /root/first.sh
-rwxr-xr-x. 1 root root 27 jul 4 09:24 /root/first.sh
[root@localhost ~]# echo $path 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bi
n:/root/bin
[root@localhost ~]#first.sh
-bash: first.sh: command not found
[root@localhost ~]#_path="$path:/root" 
[root@localhost ~]# echo $path 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/birh:/root/bin:/usr/local/mysql/bi
n:/root/bin:/root
[root@localhost~]#first.sh//直接以文件名运行脚本
当前的目录位于:
/boot
其中以vml开头的文件包括:-rwxr-xr-x.1root5.2m apr 12 13:20
vmlinuz-0-rescue-b15df1eb8205483f9f70c779709810abc
-rwxr-xr-x. 1 root root 5.2m nov 22 2016 vmlinuz-3.10.0-514.el7.x86_64

只读变量

shell变量中有一种特殊情况,一经设定,其值是不可改变的,这种变量被称为只读变量。

位置变量

为了在使用shell脚本程序时,方便通过命令行,为程序提供操作参数,bash引入了位置变量的概念。

执行vim adder2num.sh

[root@localhost ~]# ./adder2num.sh 12 34
12 + 34=46

[root@localhost ~]# ./adder2num.sh 56 78
56 + 78 =134

预定义变量

预定义变量是由bash程序预先定义好的一类特殊变量,用户只能使用预定义变量,而不能创建新的预定义变量。

  • $#:表示命令行中位置参数的个数。
  • $*:表示所有位置参数的内容。
  • $?:表示前一条命令执行后的返回状态,返回值为0表示执行正确,返回任何非0值均表示执行出现异常。
  • $0:表示当前执行的脚本或程序的名称。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com