一、shell脚本语言基础内容

目录

1、简介:

2、shell脚本语言的基础知识点

3、shell脚本常见的变量

4、变量引用 


1、简介:

shell是基于Linux系统上的一个程序,Linux系统的背景是怎么样的,如下介绍一下:

 Linux 是一套免费试用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任 务、支持多线程和多 CPU 的操作系统。

1983 年 9 月 27 日,Richard Stallman(理查德-马修-斯托曼)发起 GNU 计划,它的目标是创建一 套完全自由的操作系统。为保证 GNU 软件可以自由的使用、复制、修改和发布,所有的 GNU 软件都 有一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,GNU 通用公共许可 证(GNU General Plubic License,GPL),说白了就是不能做商业用途。 GNU 是"GNU is Not Unix"的递归缩写。UNIX 是一种广泛使用的商业操作系统的名称。

1985 年,Richard Stallman 又创立了自由软件基金会(Free Software Foundation,FSF)来为 GNU 计划提供技术、法律以及财政支持。

1990 年,GNU 计划开发主要项目有 Emacs(文本编辑器)、GCC(GNU Compiler Collection,GNU 编 译器集合)、Bash 等,GCC 是一套 GNU 开发的编程语言编译器。还有开发一些 UNIX 系统的程序库和 工具。

1991 年,Linuxs Torvalds(林纳斯- 托瓦兹)开发出了与 UNIX 兼容的 Linux 操作系统内核并在 GPL 条款下发布。

1992 年,Linux 与其他 GUN 软件结合,完全自由的 GUN/Linux 操作系统正式诞生,简称 Linux。

1995 年 1 月,Bob Young 创办 ACC 公司,以 GNU/Linux 为核心,开发出了 RedHat Linux 商业版。

Linux 基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。与 Unix 思想十分 相近

Shell 是一个 C 语言编写的脚本语言,它是用户与 Linux 的桥梁,用户输入命令交给 Shell 处理, Shell 将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户

流程图如下:

Linux的界面主要分为两大类:

1、图形界面 Shell(GUI Shell) GUI 为 Unix 或者类 Unix 操作系统构造一个功能完善、操作简单以及界面友好的桌面环境。主流桌 面环境有 KDE,Gnome 等。

2、 命令行界面 Shell(CLI Shell) CLI 是在用户提示符下键入可执行指令的界面,用户通过键盘输入指令,完成一系列操作。 在 Linux 系统上主流的 CLI 实现是 Bash,是许多 Linux 发行版默认的 Shell。

还有许多 Unix 上 Shell,例如 tcsh、csh、ash、bsh、ksh 等。


注:如下的讲解shell脚本是Linux系统序列的centos系统中进行。

2、shell脚本语言的基础知识点

1.开发一个简单的打印hello word的脚本

# vim test.sh

#!/bin/bash
echo "Hello world!" 

解析:

第一行指定shell解析器,

第二行执行动作,就是打印 Hello world!

开发完成之后,我们就可以执行 Shell 脚本了。

shell脚本执行的方式有三种方法:
方法 1:直接用 bash 解释器执行 

# bash test.sh
Hello world! 

或者
# sh test.sh
Hello world!

方法2:使用./test.sh的方式执行

# ll test.sh 
-rw-r--r--. 1 root root 32 Aug 18 01:07 test.sh 
# chmod +x test.sh 
# ./test.sh        
-bash: ./test.sh: Permission denied 
# chmod +x test.sh 
# ./test.sh
Hello world!

该方式的执行,需要被执行的shell脚本有当前用户可执行的权限,就是“x”权限,还有就是必须在当前的shell所在的目录下执行的,

方法3:使用source的方式执行shell脚本

# source test.sh 
Hello world! 

这里也是要求在当前的目录下。

3、shell脚本常见的变量

1. 系统变量

在Linux的命令行下直接执行 env、set 查看系统或环境变量。

env 显示用户环境变量,

set 显示 Shell 预先定义好的变量以及用户变量。

可以通过 export 导出成用户变量。

一些 Shell 脚本开发过程中时常用的系统变量: 

# 默认 Shell 
$SHELL 

# 当前用户家目录 
$HOME 

# 内部字段分隔符 
$IFS 

# 默认语言 
$LANG 

# 默认可执行程序路径
$PATH 

# 当前目录 
$PWD
 
当前用户 ID
$UID  

# 当前用户
$USER  

# 主机名
$HOSTNAME 

2、 普通变量与临时环境变量

普通变量定义:VAR=value
临时环境变量定义:export VAR=value
变量引用:$VAR

3、 位置变量 位置变量指的是函数或脚本后跟的第 n 个参数。

$1-$n,需要注意的是从第 10 个开始要用花括号调用,

例如
${10}

shift 可对位置变量控制,
例如: 

脚本的内容
#!/bin/bash
echo "1: $1"
shift
echo "2: $2"
shift
echo "3: $3"

执行脚本
# sh test.sh a b c
1: a
2: c
3:

注:如上的现象就是表shift将变量的值向前移动了一位了,这里可能有一个疑问了,就是按照上面的所说最开始的位置对应值是
1:a
2:b
3:c
因为a的值向前移动不了,因为是最前面了,所有1对应的还是a,但是c前面移动一位就是2:c了,

每执行一次 shift 命令,位置变量个数就会减一,而变量值则提前一位。

如果是shift n,则可以设置向前移动 n 位。 

4、 特殊变量 

# 脚本自身名字 
$0 
# 返回上一条命令是否执行成功,0 为执行成功,非 0 则为执行失败 
$? 
# 位置参数总数 
$# 
# 所有的位置参数被看做一个字符串 
$* 
# 每个位置参数被看做独立的字符串
$@  
# 当前进程 PID 
$$ 
# 上一条运行后台进程的 PID
$! 

测试:

[root@localhost ~]# cat test.sh 
#!/bin/bash
echo  "脚本自身名字"
echo $0 
echo "返回上一条命令是否执行成功,0 为执行成功,非 0 则为执行失败"
echo $? 
echo " 位置参数总数" 
echo $# 
echo  "所有的位置参数被看做一个字符串"
echo $* 
echo "每个位置参数被看做独立的字符串"
echo $@  
echo "当前进程 PID" 
echo $$ 
echo "上一条运行后台进程的 PID"
echo $! 

[root@localhost ~]# sh test.sh q
脚本自身名字
test.sh
返回上一条命令是否执行成功,0 为执行成功,非 0 则为执行失败
0
 位置参数总数
1
所有的位置参数被看做一个字符串
q
每个位置参数被看做独立的字符串
q
当前进程 PID
16655
上一条运行后台进程的 PID

4、变量引用

赋值运算符 

=    变量赋值 
+=   两个变量相加,这里的相加可以理解合并

1、自定义变量和引用

# VAR=123 
# echo $VAR 
123 
# VAR+=456 
# echo $VAR 
123456

Shell 中所有变量引用使用$符,后跟变量名。 有时个别特殊字符会影响正常引用,那么需要使用${VAR}

# VAR=123 
# echo $VAR 
123 
# echo $VAR_  
注:Shell 允许 VAR_为变量名,所以此引用认为这是一个有效的变量名,故此返回 空 
# echo ${VAR} 
123

 还有时候变量名与其他字符串紧碍着,也会误认为是整个变量

# echo $VAR456 
 
# echo ${VAR}456 
123456

 2、将命令结果作为变量值 

直接上实例

# VAR=`echo 123`  
# echo $VAR 
123 
# VAR=$(echo 123) 
# echo $VAR 123 

注:这里的反撇号等效于$(),都是用于执行 Shell 命令

3、双引号和单引号

在变量赋值时,如果值有空格,Shell 会把空格后面的字符串解释为命令:

# N=3 
# VAR="1 2 $N" 
# echo $VAR 
1 2 3 

# VAR='1 2 $N' 
# echo $VAR 
1 2 $N

 单引号是告诉 Shell 忽略特殊字符,而双引号则解释特殊符号原有的意义,比如$、!。

4、注释

Shell脚本中的注释也很简单,只要在每行前面加个#号,即表示 Shell 忽略解释。  


总结:如下就是shell脚本的基础内容了,后续的内容在后面的博客文章可以跳转到后面的文章进行阅读。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jiang0615csdn

你对鼓励是我最大的动力来源

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值