Shell 脚本

书写

开头第一行可以以#! /bin/bash开头也可以不写,保存后的文件名可以以.sh结尾也可以不写,Linux系统会自动对文件类型进行识别。

运行

执行shell sh test1.sh这种执行方式可以不设置文件的属主还有权限,属于调用shell给它参数然后执行参数内的脚本。

sh < text 为文本输入。

shell环境变量

$* 所有命令行参数的值
$# 命令行参数的总数
$$ 当前进程的进程ID(PID)
$? 最后执行的一条命令的退出状态,返回值为0则成功,非0则失败
$! 在后台运行的最后一个进程的进程ID

位置参数

共有10个位置参数,依次是:$0 ,$1 ,$2 ,$3 ,$4 ,$5 ,$6 ,$7 ,$8 ,$9 ,其中 $0 始终表示命令名或shell脚本名。

set 给位置参数赋值

set a b c 执行结果是把字符串a赋值给$1,b赋值给$2 ...依次赋值。但$0 不能利用set命令赋值,因为它始终是命令名。

shift 移动位置参数

shift 4 把位置参数左移4位。

如果没有带参数,默认值为1。

用户自定义变量

shell脚本中的用户自定义变量拥有临时的存储空间。

在shell编程语言中无需声明和初始化shell变量。

一个未初始化的shell变量,其默认的初始值为空字符串。

格式:

mkdir=/home/zzm

如果赋值给变量的值中有空格、制表符或换行符,要用引号把字符串包起来。

赋值语句可以出现多个赋值,变量赋值可以迭代进行。各赋值动作是从右向左实现的。A = $B B=$C C=hello

使用变量:

在变量前面加一个$符。

如果出现在长字符串中要使用{}把变量名包括起来。

shell中的特殊字符

* 匹配任意一个字符串
? 匹配任意一个字符
[] 方括号中有一个字符组,匹配该字符组所限定的任何一个字符
! 表示不再一对方括号中的字符

双引号

除$,倒引号和反斜线()仍保留其特殊功能外,其余字符作为普通字符对待。

倒引号

  1. shell解释执行
  2. 利用倒引号的shell解释功能可以进行命令替换,即把倒引号中的命令的结果赋值给指定变量。

执行顺序操作符

顺序分隔符 ; 多条命令可以在多行中键入,也可以将这些命令在一行中输入,但各条命令应以分好隔开
管道线 | 也是顺序执行

执行顺序操作符

逻辑与&& 把两个或两个以上的命令联系在一起。

第一个命令成功才运行后面的命令。命令执行成功返回值为0,失败为非0。

执行顺序操作符

逻辑或|| 把两个或两个以上的命令联系在一起。

第一个成功则不运行第二个。

注释符,反斜线

# 注释符
 反斜线 把特殊字符变为普通字符。
& 后台操作符

输入输出命令

shell参数意义

$0  shell本身文件名
$? 最后运行命令的返回值
$! shell最后运行的后台process的PID
$$ shell本身的pid
$#  shell的参数个数
$@ 所有参数列表, 以"$1 $2 … $n"的形式输出所有参数,此选项参数可超过9个
$*   所有参数列表, 以"$1" "$2" … "$n" 的形式输出所有参数

有什么不同见解可以在评论区共同讨论
原文地址:https://www.cnblogs.com/lambertlt/p/13946294.html