Shell脚本

2021/9/2 7:06:02

本文主要是介绍Shell脚本,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

shell脚本基础

变量

一、什么是变量

变量即可以变化的量

二、变量名称注意事项

  • 只能包含字母、数字、下划线,并且不能以数字开头
  • 不应该跟系统中已有的环境变量重名,尽量不要全部使用大写,尽量不要用“_”下划线开头
  • 最好做到见名知义
  • 不能使用程序中的保留字,例如if、for等

三、变量类型

  • 字符型
  • 数值型
    • 整型
    • 浮点型
  • 布尔型

四、变量操作

  • 设置变量
  • 引用变量
  • 撤销变量

五、bash变量类型

  • 环境变量
  • 本地变量(局部变量)
  • 位置变量
  • 特殊变量(bash内置的,用来保存某些特殊数据的变量,也称系统变量)

本地变量

VAR_NAME=VALUE      //本地变量,作用域为当前shell进程。对当前shell外的其它shell进程,包括当前shell的父shell、子shell进程均无效

local VAR_NAME=VALUE    //局部变量,作用域为当前代码段,常用于函数

环境变量

export VAR_NAME=VALUE   //作用域为当前shell进程及其子进程

位置变量

$1,$2,$3,....       //用来引用脚本的参数
    shift [num]         //位置变量使用完以后退出,后面的参数向前推进

特殊变量

$#      //是传给脚本的参数个数
$0      //是脚本本身的名字
$!      //是shell最后运行的后台Process的PID
$@      //是传给脚本的所有参数的列表
$*      //是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$      //是脚本运行的当前进程ID号
$?      //是显示上条命令的退出状态,0表示没有错误,其他表示有错误

bash内建环境变量

PATH
SHELL
UID
HISTSIZE
HOME
PWD
HISTFILE
PS1

只读变量(常量)

readonly VAR_NAME=VALUE     //不能修改值,不能销毁,只能等shell进程终止时随之消亡

∗和@ 的区别为: ∗和@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"1""2" … "n"的形式输出所有参数。但是当它们被双引号("")包含时,"*" 会将所有的参数作为一个整体,以"12 … n"的形式输出所有参数;"@" 会将各个参数分开,以"1""2" … "$n" 的形式输出所有参数。

$? 可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1。

Shell 是什么

一、Shell  可以是一个程序,提供一个与用户对话的环境。这个环境只有一个命令提示符,让用户从键盘输入命令,所以又称为命令行环境( command line interface ,简写为 CLI )。 Shell 接收到用户输入的命令,将命令送入操作系统执行,并将结果返回给用户。

二、Shell 也可以是一个命令解释器,解释用户输入的命令。它支持变量、条件判断、循环操作等语法,所以用户可以用 Shell 命令写出各种小程序,又称为脚本 script。这些脚本都通过 Shell 的解释执行,而不通过编译。

三、Shell 还可以是一个工具箱,提供了各种小工具,供用户方便地使用操作系统的功能。

Shell 不像 C 语言, C++、Java 等编程语言那么完整,但是 Shell 这门语言可以帮助我们完成很多自动化任务,例如:保存数据,监测系统的负载,等等。

Shell 相比 C 等语言的优势在于它是完全嵌入在 Linux 中的,不需要安装,编译。

shell的种类

一、Shell 有很多种,只要能给用户提供命令行环境的程序,都可以看作是 Shell 。

二、历史上,主要的 Shell 有下面这些:

  • Bourne Shell(sh) ,是目前所有 Shell 的祖先,被安装在几乎所有发源于 Unix 的操作系统上。
  • Bourne Again shell(bash) ,是 sh 的一个进阶版本,比 sh 更优秀, bash 是目前大多数 Linux 发行版以及 macOS 操作系统的默认 Shell 。
  • C Shell(csh) ,它的语法类似 C 语言。
  • TENEX C Shell(tcsh) ,它是 csh 的优化版本。
  • Korn shell(ksh) ,一般在收费的 Unix 版本上比较多见。
  • Z Shell(zsh) ,它是一种比较新近的 Shell ,集 bash 、 ksh 和 tcsh 各家之大成

什么是 Shell 脚本

一、计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。

二、通俗的理解就是,多个 Shell 命令的组合并通过 if 条件分支控制或循环来组合运算,实现一些复杂功能。

三、例如我们常用的 ls 命令,它本身也是一个 Shell 脚本,通过执行这个 Shell 脚本可以列举当前目录下的文件列表。

编写我们的第一个 Shell 脚本 hello.sh

#!/bin/bash

# 执行的命令主体
ls
echo "hello world"
  • #!/bin/bash 指定脚本要使用的 Shell 类型为 Bash 。
  • #! 被称为 Sha-bang ,或者 Shebang , Linux 会分析它之后的指令,并载入该指令作为解析器。
  • ls 就是脚本文件的内容了,表明我们执行 hello.sh 脚本时会列举出当前目录的文件列表并且会向控制台打印 hello world 。

如果我们不是 root 用户的话,需要给脚本添加可执行权限才可以运行, chmod +x hello.sh 。

增加执行权限后可以执行 ./hello.sh 来运行该脚本,也可以使用 bash -x hello.sh 以调试模式运行脚本。

系统命令

上面是通过 ./hello.sh 的方式执行的脚本文件,每次都需要添加路径,那么我们可以像执行 ls 一样,直接执行 hello.sh 吗,答案是可以的。

1.echo $PATH 获取系统里所有可以被直接执行程序的路径。

2.sudo cp hello.sh /usr/bin 将 hello.sh 拷贝到上诉任意一个 path 路径路径中,这里拷贝到 /usr/bin 。

3.现在可以直接运行 hello.sh 命令而不需要添加路径了。

shell算术运算

A=3
B=6

let C=$A+$B         //let 算术运算表达式

C=$[$A+$B]          //$[算术运算表达式]

C=$(($A+$B))         //$((算术运算表达式))

C=`expr $A + $B`    //expr 算术运算表达式,表达式中各操作数及运算符之间要有空隔,而且要使用命令引用

命令间的逻辑关系

一、逻辑与:&& 第一个条件为假时,第二个条件不用再判断,最终结果已经有 第一个条件为真时,第二个条件必须得判断

二、逻辑或:|| 前一个命令的结果为真时,第二个命令就不执行 前一个命令的结果为假时,第二个命令必须执行



这篇关于Shell脚本的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程