千家信息网

Shell脚本是什么

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,小编给大家分享一下Shell脚本是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言Shell Script,Shel
千家信息网最后更新 2026年11月02日Shell脚本是什么

小编给大家分享一下Shell脚本是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

前言
Shell Script,Shell脚本与Windows及Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,毕竟它使用了Linux/Unix下的命令。shell script是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正规表示法,管道命令以及数据流重导向等功能,以达到我们所想要的处理目的。
更明白地来说,shell script就像早期dos年代的.bat,最简单的功能就是将许多指令汇整写一起,让使用者很容易地就能够一个操作执行多个命令,而shell script更是提供了数组,循环,条件以及逻辑判断等重要功能,让使用者可以直接以shell来写程序,而不必使用类似C程序语言等传统程序编写的语法。

概念区别
Shell和Shell脚本有什么区别?确切一点说,Shell就是一个命令行解释器,它的作用就是遵循一定的语法将输入的命令加以解释并传给系统。它为用户提供了一个向Linux发送请求以便运行程序的接口系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。 Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言(就是你所说的shell脚本)。作为命令语言,它互动式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支。它虽然不是 Linux系统内核的一部分,但它调用了系统内核的大部分功能来执行程序、创建文档并以并行的方式协调各个程序的运行。

一、Shell脚本的基本语法
1、编写个简单的shell脚本
[root@xj ~]# vim example.sh
#!/bin/bash
#This is to show waht a example looks like.
echo "our first example"
echo "we are currently in the following directroy"
pwd
echo "This directory contains the following files"
ls
[root@xj ~]# chmod +x example.sh //给脚本赋予可执行权限
[root@xj ~]# ./example.sh //执行运行
2、创建和执行shell脚本的基本步骤

二、Shell脚本的变量
1、什么是变量
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)
中,变量可能是不可变(immutable)的。在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象(如在Java和Visual Basic中);但另外一些语言可能使用其它概念(如C的对象)来指称这种抽象,而不严格地定义"变量"的准确外延。

2、Shell变量
Shell中变量是传递数据的一种方法。变量是用来代表每个值的符号名
Shell中有两类变量:临时变量和永久变量。
扩展:
自定义环境变量
[root@xj ~]# mv example01.sh /etc/sysconfig/
[root@xj ~]# export PATH=/etc/sysconfig:$PATH
[root@xj ~]# echo $PATH
/etc/sysconfig:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
注:这种方式一旦终端关闭后,就会失效,要想修改永久生效,可以修改用户目录下.bashrc文件,在此文件的最后一行添加export PATH=/etc/sysconfig:$PATH保存退出。
[root@localhost ~]# source .bashrc
执行.bashrc后不报错,则表示成功!

用户定义变量:由字母或下划线打头,由字母、数字或下划线组成,区分大小写并且大小写字母意义不同。变量名长度没有限制。
使用变量值时,应在变量名前加上"$"符号。
例如:
[root@xj ~]# 123=abc
bash: 123=abc: command not found…

变量赋值:变量=值,赋值号"="两边不加空格,否则提示错误。
[root@xj ~]# a = 1
bash: a: command not found…
正确方式如下:
[root@xj ~]# name=rm
[root@xj ~]# NAME=mk
[root@xj ~]# echo $NAME
mk
[root@xj ~]# echo $name
rm

3、变量的运用
例:将一个命令的执行结果赋给变量
[root@xj ~]# A=`date`
[root@xj ~]# echo $A
Tue Mar 8 21:12:45 CST 2016
[root@xj ~]# B=$(date)
[root@xj ~]# echo $B
Tue Mar 8 21:13:33 CST 2016

变量值的可传递性
[root@xj ~]# A=`date`
[root@xj ~]# C=$A
[root@xj ~]# echo $C
Tue Mar 8 21:12:45 CST 2016

可以利用变量和其它字符组成一个新的字符串
[root@xj ~]# MYDIR=/home/rm/
[root@xj ~]# echo $MYDIR
/home/rm/
[root@xj ~]# echo $MYDIRzhangsan
输出内容为空
[root@xj ~]# echo ${MYDIR}zhangsan
/home/rm/zhangsan

给变量赋值多个单词:
[root@xj ~]# NAME="mk docker"
[root@xj ~]# echo $NAME
mk docker
[root@xj ~]# NAME="rm $NAME"
[root@xj ~]# echo $NAME
rm mk docker
[root@xj ~]# NAME='rm $NAME'
[root@xj ~]# echo $NAME
rm $NAME
单引号和双引号的区别:单引号将变量之间的内容原封不动地指定给变量。双引号取消了空格的作用,保留特殊符号的含义。

删除变量:
[root@xj ~]# echo $NAME
rm $NAME
[root@xj ~]# unset NAME
[root@xj ~]# echo $NAME

4、Shell脚本中的位置变量与特殊变量
位置变量:Shell解释执行用户的命令时,将命令行的第一个字作为命令名,而其它字作为参数。由出现在命令行上的位置确定的参数称为位置参数。
位置变量:使用$N来表示
[root@xj ~]# vim b.sh
#!/bin/bash
echo "第一个目录是$1"
echo "第二个目录是$2"
[root@xj ~]# chmod +x b.sh
[root@xj ~]# ./b.sh /home/ /etc/
第一个目录是/home/
第二个目录是/etc/
$0 这个程序的文件名 example.sh
$n 这个程序的第n个参数值,n=1..N

特殊变量:
有些变量是一开始执行Script脚本时就会设定,且不能被修改,但我们不叫它只读的系统变量,而叫它特殊变量。这些变量当一执行程序时就有了,以下是一些等殊变量:
$* 这个程序的所有参数
$# 这个程序的参数个数
$$ 这个程序的PID
$! 执行上一个后台程序的PID
$? 执行上一个指令的返回值
[root@xj ~]# vim z.sh
#!/bin/bash
echo "$* 表示这个程序的所有参数"
echo "$# 表示这个程序参数的个数"
touch /root/a.txt
echo "$$ 表示这个程序的PID"
touch /root/b.txt &
echo "$! 表示上一个后台指令的PID"
echo "$$ 表示程序的进程PID"
[root@xj ~]# ./z.sh aaa bbb ccc
aaa bbb ccc 表示这个程序的所有参数
3 表示这个程序参数的个数
39839 表示这个程序的PID
39841 表示上一个后台指令的PID
39839 表示程序的进程PID

例:变量在shell中的使用
[root@xj ~]# vim z1.sh
#!/bin/bash
var1="abcd efg"
echo $var1
var2=1234
echo "The value of var2 is $var2"
echo $HOME
echo $PATH
echo $PWD
[root@xj ~]# chmod +x z1.sh
[root@xj ~]# ./z1.sh
abcd efg
The value of var2 is 1234
/root
/etc/sysconfig:/etc/sysconfig:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
/root

三、shell中的命令
1、Read命令的使用
作用:从键盘读入数据,赋给变量
[root@xj ~]# read a b c
1 22 33
[root@xj ~]# echo $a $b $c
1 22 33

read与参数-p -n -t结合使用
-p(提示语句)
-n(字符个数)
-t(等待时间)
[root@xj ~]# read -p "请输入你的准考证号: " ID
请输入你的准考证号: 20160308
[root@xj ~]# echo $ID
20160308
[root@xj ~]# vim read.sh
#!/bin/bash
read -p "请输入你的姓名:" NAME
read -p "请输入你的年龄:" AGE
read -p "请输入你的性别:" SEX
echo "你的基本信息如下:"
echo "姓名:$NAME"
echo "年龄:$AGE"
echo "性别:$SEX"
[root@xj ~]# chmod +x read.sh
[root@xj ~]# ./read.sh
请输入你的姓名:孙悟空
请输入你的年龄:500
请输入你的性别:男
你的基本信息如下:
姓名:孙悟空
年龄:500
性别:男

2、expr命令的使用
作用:Shell变量的算术运算:
§ expr命令:对整数型变量进行算术运算
语法:expr 表达式 //注意:运算符之间要有空格
[root@xj ~]# expr 3 + 2
5
[root@xj ~]# expr 8 - 3
5
[root@xj ~]# expr 8 / 4
2
[root@xj ~]# expr 8 \* 4
32
[root@xj ~]# expr 8 % 3
2
注:%取余运算

结合变量使用运算符
[root@xj ~]# var1=16
[root@xj ~]# var2=4
[root@xj ~]# expr $var1 - $var2
12

3、算数运算符在shell脚本中的使用
[root@xj ~]# vim expr.sh
#!/bin/bash
read -p "Please input the value of a " a
read -p "Please input the value of b " b
read -p "Please input the value of c " c
value1=`expr $a + $b + $c`
echo "The value of value1 is $value1"
value2=`expr $c / $b`
echo "The value of value2 is $value2"
value3=`expr $c \* $b`
echo "The value of value3 is $value3"
value4=`expr $a + $c / $b`
echo "The value of value4 is $value4"
[root@xj ~]# ./expr.sh
Please input the value of a 10
Please input the value of b 20
Please input the value of c 30
The value of value1 is 60
The value of value2 is 1
The value of value3 is 600
The value of value4 is 11

复杂运算
[root@xj ~]# expr $(expr $(expr 5 + 11) / $var3) + 4
12

以上是"Shell脚本是什么"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

变量 程序 命令 脚本 参数 语言 输入 用户 运算 指令 文件 位置 功能 目录 系统 语法 特殊 个数 作用 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 伟宏互联网科技 中关村互联网科技集团 高科技与互联网 未来的互联网科技 互联网科技宣传片 华中科技有哪些互联网大佬 互联网汽车科技小镇 温州喔噻互联网科技有限公司 银川新华互联网科技职业技术培训学校图片 栖莱科技互联网股份有限公司 互联网科技创新服务 互联网还是高科技吗 重庆互联网医院沙龙医盟信息科技 荆州市昕露互联网络科技有限公司 互联网科技公司有风险吗 广西互联网科技孵化中心 互联网金融科技名词解释 区块链结合互联网科技 杭州披云加互联网科技有限公司 株洲百竞科技的互联网营销顾问 北京互联网科技公司 互联网金融公司科技 贷财互联网科技 汇久创客互联网科技 成都互联网科技公司100强 昊天互联网科技有限公司 知域互联网科技有限公司大骗子 富国互联网科技002692 卡尔迅互联网科技有限公司 武汉亿视互联网科技有限公司
0