一、概念
- Shell就是一个命令行解释器,它的作用就是遵循一定的语法将输入的命令加以解释并传给系统。
- shell script是利用shell的功能所写的一个程序
- Linux的Shell种类
- Bourne Shell(/usr/bin/sh或/bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)
- ……
二、bash
教程:https://www.w3cschool.cn/shellbook/
1、知识点
-
#!/bin/bash -v
该行告诉操作系统使用用#!
符号之后面的解释器以及相应的参数来解释该脚本文件,通过分析第一行,我们发现对应的解释器以及参数是/bin/bash -v
,则相当于/bin/bash -v 脚本
, -v 是要打印程序的源代码。只有直接运行脚本文件的时候,这一行才会起作用(./脚本
),如果使用bash 脚本
这种方式运行脚本,则该行不起作用。 -
#!/usr/bin/env bash
env的作用就是为了找到正确的脚本解释器(这里就是bash),在不同的Linux系统上该解释器可能所处的位置不同。 - 执行shell脚本,要使用
./test.sh
。直接写test.sh
,linux 系统会去 PATH 里寻找有没有叫 test.sh 的。
2、命令
- 命令后面不需要分号
- 变量命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
- 复制操作时,变量名和等号之间不能有空格
- 只读设置
readonly 变量名
#!/usr/bin/env bash
myname="liboxiang"
readonly myname
echo $myname
myname="lihaoman"
echo myname
执行结果
liboxiang
./test.sh: line 5: myname: readonly variable
myname
- 删除变量
unset 变量名
#!/usr/bin/env bash
myname="liboxiang"
echo $myname
unset myname
myname="lihaoman"
echo myname
执行结果如下
liboxiang
myname
- 字符串
- 可以用单引号,也可以用双引号,也可以不用引号
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
- 双引号里可以有变量、双引号里可以出现转义字符
- 字符串拼接
#!/usr/bin/env bash myname="liboxiang" yourname="lihaoman" str1="hello myname $myname" str2="hello "$myname$yourname echo $str1 echo $str2
执行结果
hello myname liboxiang hello liboxianglihaoman
- 获取字符串长度
#!/usr/bin/env bash myname="liboxiang" echo ${#myname}
执行结果
9
- 提取子字符串,下标由0开始
#!/usr/bin/env bash myname="liboxiang" echo ${myname:2:4}
执行结果
boxi
网友评论