首页 > 系统相关 >Shell概述、编写及执行脚本、Shell变量+数值运算

Shell概述、编写及执行脚本、Shell变量+数值运算

时间:2024-11-08 16:47:41浏览次数:5  
标签:test1 Shell 运算 echo sh 概述 root bash 变量

一、shell基本介绍 

1.1 什么是shell

◆  在Linux内核与用户之间的解释器程序

◆ 通常指 /bin/bash

◆ 负责向内核翻译及传达用户/程序指令

◆ 相当于操作系统的“外壳”

1.2 shell使用方式

◆ 交互式   —— 命令行

-----人工干预、智能化程度高

-----逐条解释执行、效率低

◆ 非交互式 —— 脚本

-----需要提前设计、智能化难度大

-----批量执行、效率高

-----方便在后台静悄悄地运行

[root@test1 ~]# cat /etc/shells   #查看所有解释器
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

[root@test1 ~]# sh    #切换成sh解释器
sh-4.2#

sh-4.2# ls               #利用sh解释器输入命令
\  anaconda-ks.cfg  named.conf    test1.txt

sh-4.2#exit         #退出sh解释器

1.3 bash命令和shell脚本优点

bash命令:tab键、快捷键、历史命令、支持别名、管道、重定向。

shell脚本:提前写好可执行的语句,可以完成特定任务的文件按顺序、批量化执行。

二、shell脚本的编写

2.1 创建shell脚本文件并命名

[root@test1 ~]# vim   /test01.sh

2.2 shell脚本编写规范 

2、声明解释器
#!/bin/bash
3、编写注释
# 可以描述脚本功能、变量作用等信息
4、执行指令

yum   -y  install  httpd

。。。。。。

2.3 脚本的执行

1)方式一:

[root@test1 ~]# chmod u+x /test01.sh  #为脚本添加x权限,使用相对或者绝对路径执行

[root@test1 ~]# cd /

[root@test1 ~]# ./test01.sh   #执行脚本

2)方式二:

[root@test1 ~]# bash /test01.sh    #使用解释器程序执行脚本,无需x权限

用户(root)---bash ---bash---echo   会开启子进程

3)方式三:

[root@test1 ~]# source /test01.sh   #使用source命令执行脚本,无需x权限

用户(root)---bash---echo  不会开启子进程

示例:编写脚本,安装网站服务并开启,浏览网站时显示"web-test~~"。

[root@test1 ~]# vim /http.sh

#!/bin/bash

#搭建网站

yum -y install httpd

echo "web-test~~" > /var/www/html/index.html

systemctl restart httpd

[root@test1 ~]# chmod u+x /http.sh

[root@test1 ~]# cd /

[root@test1 ~]#  ./http.sh

 2.4 重定向符号说明

符号

说明

>

重定向标准输出

2>

重定向错误输出

&>

重定向所有输出

三、shell变量

3.1 变量和常量

变量-------使用固定的名称存放可能发生变化的值,可以提高脚本的灵活度、适应力。

常量-------固定不变的内容。

3.2 变量的种类

3.2.1 自定义变量

● 名称可以用数字、字母、下划线,不能以数字开头,不能使用特殊符号,等号两边不能有空格。

变量名称=值

变量使用

说明

a=10

创建变量(对变量赋值),名字是a,值是10

a=30

再次赋值,之前的会被覆盖

 echo $a

调用变量时使用$符号

unset  a

取消变量的定义

a= 

将变量a赋值为空,效果取消变量定义

echo ${a}RMB

变量名容易与后续字符发生混淆时使用大括号隔开

3.2.2 环境变量

● 由系统提前定义好,使用时直接调用

变量

说明

USER

当前用户名

UID

当前用户的id号

HOME

当前用户家目录

HOSTNAME

主机名

SHELL

当前用户的解释器

PWD

当前位置

PATH 

存储命令的路径

PS1

一级提示符

 PS2

二级提示符

env

看所有环境变量

set 

查看所有变量

 3.2.3 位置变量与预定义变量

变量

说明

$1

执行脚本时后面第1个位置参数

$2

执行脚本时后面第2个位置参数

$3

执行脚本时后面第3个位置参数

$*

执行脚本时后面所有位置参数

$#

执行脚本时后面位置参数的个数

$$

随机进程号

$?

判断上一条指令是否执行成功,0是成功,非0是失败

示例: 编写脚本,创建用户tom,配置密码123456

#!/bin/bash
useradd tom
echo "123456" | passwd --stdin tom

改良版

#!/bin/bash
useradd $1
echo "$2" | passwd --stdin $1

四、变量的扩展知识

4.1 引号和反撇号

变量及符号

说明

" "

双引号,界定范围

echo "$a"

正常调用变量a

' '

单引号,界定范围,屏蔽特殊符号的功能

echo '$a'

无法调用变量a,$被屏蔽

` `

反撇号,获取命令的执行结果,还可以使用$( )实现相同效果

a=`date`

将date执行结果赋值给a

a=$(date)

将date执行结果赋值给a

4.2 使用read指令

#!/bin/bash
read -p "请输入用户名"  u   # -p是可以定义提示信息,u相当于自
# 定义变量名称,可以存储用户看到提示信息后输入的字符
useradd $u
read -p "请输入密码"  n
echo "$n" | passwd --stdin $u

# stty  -echo 屏蔽回显
# stty  echo 恢复回显

再次改良脚本:

#!/bin/bash
read  -p  "请输入用户名"  u
useradd  $u
stty  -echo
read  -p  "请输入密码"  n
stty  echo
echo  "$n" | passwd  --stdin  $u

4.3 使用export发布全局变量

● 局部变量------仅仅在当前解释器进程中使用的变量

● 全局变量------解释器产生的子进程中也可以使用的变量

a=10     #创建变量

export  a    #将已有变量发布为全局效果

export  b=20    #创建变量的同时发布为全局效果

export  -n  b   #将全局变量恢复为局部变量

注意:测试时要在父进程创建变量,然后可以执行bash进入

子进程测试效果,如果要返回父进程要执行exit指令

4.4 算法

加、减、乘、除、求模(取余数)

4.4.1 使用expr命令,可以运算并输出结果

expr  1  +  1     //加法,运算符号两边要有空格

expr  2 – 1     //减法

expr  2  '*'  2  //乘法

expr  2  \*  2   // \是转义符号,可以屏蔽身后一个特殊符号的功能

expr  4  /  2   //除法

expr  5  %  2   //取余数

a=10

b=20

expr $a + $b

expr $a + 100

expr $a + $a

4.4.2 $[  ]  运算  使用$((  )) 可以实现相同效果

echo $[2*2]

echo $[2-2]

echo $[2/2]

echo $[2%2]

a=10

b=20

expr $a + $b

echo $[a+b]

标签:test1,Shell,运算,echo,sh,概述,root,bash,变量
From: https://blog.csdn.net/bsqsb/article/details/143626044

相关文章

  • 监控 Windows 更新补丁安装过程中的文件夹和文件,可以通过 PowerShell 监控 Windows 更
    监控Windows更新补丁安装过程中的文件夹和文件,可以通过PowerShell监控Windows更新的日志文件夹、注册表或其他相关位置。Windows更新会在多个地方生成日志和文件,下面提供了一个使用PowerShell监控Windows更新相关路径、文件夹及文件的示例。监控Windows更新相关的文......
  • c++执行shell操作
     message("----->>>>>shelldemo/CMakeLists.txt")#收集当前目录下所有的.cpp文件aux_source_directory(.DIR_SRCS)#添加可执行文件add_executable(shelldemo${DIR_SRCS})#链接需要的库target_link_libraries(shelldemo${LIB_LIB})/shelldemo/CMakeList......
  • clickhouse数据库,时间范围一周,周期为每一小时,聚合数据中的最新,最大值,最小值,平均值,求和
    工作中通过ai改来改去最后实现的,非常好用databaseVal举例:1HOURinterval:1WEEK最新,这里用到了ROW_NUMBER,就是编号,OVER就是分组,分组是通过一小时聚合,聚合后会有编号每一个组的,从1开始到该组结束,取每组的第一条就是最新的SELECTreport_timeAStimeInterval,cpu_usageAScpu......
  • Matlab矩阵运算的硬件资源分析
    在用Matlab创建矩阵并计算矩阵乘法运算时,要注意计算机的可用内存大小(空间资源)和CPU性能(影响所用计算时间)。例如我们做以下测试:n为qubit的数目,那么一个矩阵Matrix_A=rand(2^n,2^n)可以表示一个n-qubit的密度矩阵(全实数量子态)或者一个幺正操作(实数矩阵例子)。注意:这样的矩阵Matrix_......
  • 命令行工具PowerShell使用体验
    命令行工具PowerShell使用PowerShell是微软开发的一种面向对象的命令行Shell和脚本语言环境,它允许用户通过命令行的方式管理操作系统。相较于传统CMD,PowerShell增加了面向对象的程序设计框架,拥有更强大的功能和扩展性。使用PowerShell可以方便地自动化系统管理任务,构建脚本......
  • dotnet cli publish 命令行发布脚本 bat shell
    dotnetcli发布脚本publish_remote.bat该脚本实现一键主要发布到远程的共享文件夹中@echooff::定义变量SHARE_PATH:共享文件夹,SOURCE_DIR:代码发布的文件夹,TARGET_DIR:目标文件夹(共享文件夹的映射)setPRO_PATH=.\WebAppsetSHARE_PATH=\\pcmesone\Reportset......
  • PowerShell DSC(Desired State Configuration)是一种配置管理框架,旨在通过声明性的方式
    PowerShellDSC(DesiredStateConfiguration)是一种配置管理框架,旨在通过声明性的方式自动化和管理计算机的配置。它是WindowsPowerShell的一部分,允许管理员定义和维护计算机系统的目标配置状态,而不是手动进行逐个更改。1. 什么是PowerShellDSC?PowerShellDSC是一种基于声......
  • PowerShell 脚本(.ps1)、批处理文件(.bat)、VBScript(.vbs) 和 旧版 JavaScript(.js) 都可以在
    PowerShell脚本(.ps1)、批处理文件(.bat)、VBScript(.vbs)和旧版JavaScript(.js)都可以在Windows系统中运行,但它们的兼容性和支持范围有一定的差异,尤其是在不同的Windows版本上。下面是它们在Windows系统中支持的情况:1. PowerShell脚本(.ps1)兼容性: PowerShell是自Window......
  • Kafka概述--消息中间件
    目录1.1定义1.2、kafka的中的组成成员1.3消息队列(中间件)1.3.1传统消息队列的应用场景1.3.2消息队列的两种模式1.4Kafka基础架构1.5、kafka的名词概念1.1定义kafka面试非常的重要,做实时或者准实时项目必用工具(绕不开)。Kafka就是用来存储消息的,消息中间件。......
  • Xshell 8 Build 0063绿色特别版发布:功能强大且永久免费使用
    软件介绍Xshell是一款功能强大的Linux远程连接工具,被誉为SSH终端管理器和SSH远程连接主机客户端的最佳选择。它不仅支持多选项卡管理多个主机,还提供了对多种远程协议的支持,如Telnet、Rlogin、SSH/SSHPKCS#11、SFTP和Serial等。此外,Xshell还具备Unicode编码支持、动态端口转发、自......