Shell 是用C语言编写的程序,便于用户与Linux内核系统进行交互。
Linux的Shell种类众多,常见的有:
- Bourne Again Shell (/bin/bash)
- Bourne Shell(/bin/sh或/usr/bin/sh)
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
Bourne Again Shell (Bash) 由于易用和免费,在日常中被广泛使用。同时也是大多数Linux系统默认的Shell。
第一个 Shell脚本
使用文本编辑器vi/vim ,新建一个文件 kimbo_test.sh, 扩展名.sh 代表Shell。
ps: 扩展名并不影响脚本执行,用于标识(见名知意)
#!/bin/bashecho "Hello World!"
"#!" 是一个约定标记,告诉系统需要什么解释器执行,即使用哪一种Shell
- 加执行权限 chmod +x vi kimbo_test.sh
- 执行: sh kimbo_test.sh
- 返回结果:Hello World!
Shell 只有单行注释,使用符号 "#"
Shell 变量
1.定义:必须使用字母、下划线
2.使用: 用美元符号 "$" ,加上变量名
#!/bin/bash## 定义变量my_name="kimbo"## 打印变量echo ${my_name}
说明:大括号用来表明变量的边界,也可以 直接使用 $my_name 。为了可读性、防止歧义,建议使用大括号
Shell 字符串
单引号:属于强引用,任何字符都会原样输出
双引号:属于弱引用,可以解析变量、转义字符 (尽可能使用双引号)
- 拼接字符串
#!/bin/bash## 定义变量my_name="kimbo"my_work="data analysis"## 拼接变量my_result="my name is ${my_name},my work is ${my_work}."## 打印变量echo ${my_result}
2.获取字符串长度
#!/bin/bash## 定义变量my_name="kimbo"## 打印变量,取字符串长度echo ${#my_name}
3.截取部分字符
语法:${str:start:len},start表示从哪里开始截取,len表示 总共截取多少位。
- 左边第一个字符用 0 表示,右边第一个字符用 0-1 表示
#!/bin/bash## 定义变量my_name="kimbo"## 打印变量,从左边第2个字符开始,截取3位echo ${my_name:1:3}
4. 其他截取方式
语法:
${var#*str} 最小限度从左边截取str
${var##*str} 最大限度从左边截取str${var%str*} 最小限度从右边截取str${var%%str*} 最大限度从右边截取str#!/bin/bash##定义变量my_website="https://www.cnblogs.com//kimbo"## 打印变量echo "var is: ${my_website}"## 从左边开始查找,截取右边的字符(保留后面) ## 最小限度echo "1: ${my_website#*//}" ## 最大限度echo "2: ${my_website##*//}"## 从右边开始查找,截取左边的字符(保留前面) ## 最小限度echo "3: ${my_website%//*}" ## 最大限度echo "4: ${my_website%%//*}"
运行结果:
5. 字符替换
i) 首次替换:${var/source_str/dest_str}
ii)全部替换:${var//source_str/dest_str}
#!/bin/bashtest_str="this is kimbo,he is a humor guy. by kimbo zhang."echo "单替换:${test_str/kimbo/kobe}"echo "全部替换:${test_str//kimbo/kobe}"
运行结果: