什么是 shell?
Shell 是一个应用程序, 它连接了用户和 Linux 内核, 让用户能够更加高效, 安全, 低成本地使用 Linux 内核, 这就是 Shell 的本质.
shell 与 Linux 系统关系图
shell 也能够编程
有 if...else 选择结构, case...in 开关语句, for,while,until 循环
变量, 数组, 字符串, 注释, 加减乘除, 逻辑运算等概念;
函数, 包含用户自定义的函数和内置函数 (例如 printf\export\eval 等)
shell 在运维中的地位
下面手链形象地展示了 Shell 在运维工作中的地位
先看一个简单的 shell 程序
- #!/bin/bash
- # This is to show what a example looks like.
- echo "This first example"
- echo # This inserts an empth line in output.
- echo "We are currently in the following directory"
- pwd
- echo
- echo "This directory contains the following files"
- ls
注释:
- #!/bin/bash #! 跟 shell 命令的完全路径. 作用: 显示后期命令以哪种 shell 来执行这些命令. 如不指 shell, 以当前 shell 作为执行的 shell
- # shell 中以 #开头表示, 整行就被当作一个注释. 执行时被忽略.
总结:
创建 shell 程序的步骤
第一步: 创建一个包含命令和控制结构的 shell 文件
第二步: 修改这个文件的权限使它可以执行, 使用 chmod u+x
第三步: 执行
方法一:./{文件名}
方法二: 使用决定路径 /root/../{文件名}
方法三: bash {文件名}
Shell 变量
变量是 shell 传递数据的一种方法. 变量使用来表示每个值的符号名
例: x=1
Shell 有两种变量: 临时变量和永久变量.
临时变量: 是 shell 程序内部定义的, 其使用范围仅限于定义它的程序, 对于其它程序不可见.
永久变量: 是环境变量, 其值不随 shell 脚本的执行结束而消失.
例: 如:$PATH
# 用作运行某个命令的时候, 本地查找不到某个命令或文件, 会到这个声明的目录中去查找
用户定义变量: 由字母或下划线打头. 由字母, 数字或下划线组成, 并且大小写字母意义不同. 变量名长度没有限制.
使用变量值时, 要在变量名前加上前缀 "$".
例如: 1VAR 就是非法变量.
变量赋值: 赋值号 "=" 两边应没有空格.
例如: A=123
例如: 将一个命令的执行结构赋值给变量
可以利用变量和其它字符组成一个新的字符串.
列出所有变量
set
过滤
给变量赋值多个单词
单引号和双引号的区别
单引号之间的内容原封不动地指定给了变量,
双引号取消了空格的作用, 保留特殊符号的含义
双引号:
单引号:
删除变量
位置变量和特殊变量
位置变量: Shell 解释执行用户命令时, 将命令行的第一个字作为命令名, 而其它名字作为参数. 由出现在命令行上的位置确定的参数称为位置参数.
特殊变量: 有些变量是一开始执行 Script 脚本时就会设定, 且不能被修改, 但我们不叫它只读系统变量, 而叫它特殊变量. 这些变量当一执行程序时就有了, 以下是一些特殊变量
$*: 这个程序的所以参数
$#: 这个程序的参数个数
$$: 这个程序的 PID
$!: 执行上一个后台程序的 PID
$?: 执行上一个指令的返回值
程序例子:
- #!/bin/bash
- echo "$* 表示这个程序的所以参数"
- echo "$# 表示这个程序的参数个数"
- touch /tmp/a.txt
- echo "$$ 表示当前程序的 ID"
- touch /tmp/b.txt &
- echo "$! 执行上一个后台指令的 PID"
- echo "$$ 表示程序的进程 ID"
结果:
变量的使用:
- #!/bin/bash
- var1="abcd efg"
- echo $var1
- var2=1234
- echo "The value of var2 is $var2"
- echo $HOME
- echo $PATH
- echo $PWD
执行结果:
来源: https://www.cnblogs.com/pungchur/p/12721688.html