Shell编程基础知识补充
一、执行脚本的方式
1️⃣ 指定解释器执行 --------> /bin/bash nanxi.sh
& sh nanxi.sh
默认解释器即为/bin/bash
2️⃣ 使用路径执行(需要执行权限+x)----> ./nanxi.sh
& /scripts/nanxi.sh
两种方式均可
3️⃣ 命令调用执行 -------------------------> source /scripts/nanxi.sh
& . nanxi.sh
区别:方式1️⃣和方式2️⃣执行脚本调用的是子shell,而方式3️⃣执行脚本调用的是当前shell
二、环境变量的执行顺序
三、定义变量(特例)
1 | # 时间是固定的 |
四、Shell核心位置变量
1 | $0 # 表示Shell脚本的名称 |
五、脚本传参方式
1、直接传参
1 | root@nanxi:~# cat nanxi.sh |
2、赋值传参
1 | root@nanxi:~# cat nanxi.sh |
3、read读入
read命令简述
1 | # 使用方式: |
1 | # read使用案例 |
注意:read读取的参数,不能再用$n的方式进行调用!!!
六、变量的字串
1、字符串切片
1 | root@nanxi:~# name="nanxi i love you" |
1 | root@nanxi:~# name="nanxi i love you" |
cut命令的简单介绍
1 | 基本语法: cut [选项参数] filename |
注意⚠️: 如果文件里面的某些域是由若干个空格来间隔的,那么用cut就有点麻烦了,因为cut只擅长处理“以一个字符间隔”的文本内容。
2、变量长度统计
1 | root@nanxi:~# echo nanxi | wc -L |
wc命令回顾
1 | # 命令使用 |
3、统计字符串长度小于3的并输出到屏幕
1 | root@nanxi:~# vim select.sh |
七、判断表达式
1、文件比较运算符
表达式 | 说明 | 案例 |
---|---|---|
-e filename | 如果filename存在,则为真 | [ –e /etc/hosts ] |
-d filename | 如果filename为目录,则为真 | [ –e /etc ] |
-f filename | 如果filename为常规文件,则为真 | [ –f /usr/bin/grep] |
-L filename | 如果filename为符号链接,则为真 | [ –L /usr/bin/grep] |
-r filename | 如果filename可读,则为真 | [ –r /etc/hosts ] |
-w filename | 如果filename可写,则为真 | [ –w /etc/hosts ] |
-x filename | 如果filename可执行,则为真 | [ –x /etc/hosts ] |
filename1 –nt filename2 | 如果filename1比filename2新,则为真 | [/usr/test/file1.txt –nt /usr/test/file2.txt] |
filename1 –ot filename2 | 如果filename1比filename2旧,则为真 | [/usr/test/file1.txt –ot /usr/test/file2.txt] |
2、字符串比较运算符
表达式 | 说明 | 案例 |
---|---|---|
-z string | 如果string长度为0,则为真 | [ –z “$var”] |
-n string | 如果string长度非0,则为真 | [ –n “$var”] |
str1=str2 | 如果str1与str2相同,则为真 | [ “$var” = ”hello world”] |
str1!=str2 | 如果str1与str2不相同,则为真 | [ ”$var“ != ”hello world“] |
3、算术比较运算符
表达式 | 说明 | 案例 |
---|---|---|
num1-eq num2 | 等于 | [ 6 -eq $num ] |
num1-ne num2 | 不等于 | [ 6 -ne $num ] |
num1-lt num2 | 小于 | [ 6 -lt $num ] |
num1-le num2 | 小于等于 | [ 6 -le $num ] |
num1-gt num2 | 大于 | [ 6 -gt $num ] |
num1-ge num2 | 大于等于 | [ 6 -ge $num ] |
自由是上帝赐给人类的最大的幸福之一。
——塞万提斯