Shell脚本编写实战与积累

1基础:

Shell 是一个 C 语言编写的脚本语言,是一个命令行界面;

它是用户与 Linux 的桥梁,用户输入命令交给 Shell 处理, Shell 将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户。

bash是shell(语言)的一种

39a0779ba91d1af080fdf6ba7c640aa3f0d.jpg

  1. 第一行指定解释器    #!/bin/bash 
  2. 在当前终端生成一个子bash去执行脚本(除了source)
  3. 脚本执行方法
    1. bash test.sh           (/bin/sh 一般软连接向/bin/bash;/bin/sh 相当于 /bin/bash --posix,所以,sh跟bash的区别,实际上就是bash有没有开启posix模式的区别)
    2. ./                          (添加可执行权限 chmod +x tesh.sh)
    3. source test.sh        (不生成子bash在当前bash执行)

1.1变量

1.1.1系统变量

f017d272293c9c0104c0fde853a64060f24.jpg

1.1.2普通变量和临时环境变量

普通变量:var=value

临时环境变量:export var=value

作用域:

普通变量:当前shell

临时环境变量:当前shell和子shell    (bash)

环境变量文件:

系统级别:

/etc/profile:系统范围内的环境变量和启动文件

/etc/bashrc:系统范围内的函数和别名

1.1.3位置变量

$1 - $n 

  • 引号内也可引用
  • shift 可吞噬一个变量,后面的变量前移

 

aea331f351440d26a524867c3e64c323625.jpg

运行时:

0fb759948a78be37e525da3fd00266b1f22.jpg

1.1.4特殊变量

bb1476d946ed30b279fbc07740caf35ba7d.jpg

1.1.5变量引用

变量引用:$+变量名        (特殊情况${变量})

在双引号中可识别特殊字符,单引号中不能识别特殊字符保持原样

1.2注释

#

 

2 Shell字符串处理:${}

2.1获取字符串长度:${#var}

c9c010a433a8c8bdfe7ccc28d4cbdc0a545.jpg

2.2字符串切片:${var:start:length} 

09675ce72294a3f093c0d95509c6b23a033.jpg

2.3替换字符串:${var/old/new}

99818204fa416e595d312730bc32ef9f62b.jpg

old前面:/——匹配第一个字符串;//——匹配所有字符

${VAR//[^0-9]/}:将VAR中所有非数字替换为空

2.4字符串截取

#    去掉左边,最短匹配;##    最长匹配

%    去掉右边,最短匹配;%%    最长匹配

*    匹配去掉的字符

53fdfa0e197e31e44ce41c43bc7442cf28f.jpg

2.5变量状态赋值

${VAR:-string}       如果 VAR 变量为空则返回 string

${VAR:+string}      如果 VAR 变量不为空则返回 string

${VAR:=string}      如果 VAR 变量为空则重新赋值 VAR 变量值为 string

${VAR:?string}       如果 VAR 变量为空则将 string 输出到 stderr

938d0c8a22e84762cda68a06b065b8e372e.jpg

3 Shell表达式和运算符

3.1条件表达式

e3e19db76366e8cd2f8b99c9ec26a33c04c.jpg

3.2整数比较符

0c8b2f397d93a86ce0aa90381bdfca7195d.jpg

3.3字符串比较符

de9a7601cfb70d666c4325df63c34a53f50.jpg

7d543658f2fc023e3668b3d567c0e5c4124.jpg

d2e2815dd9817d7444a2ab49fdbbbba8c9f.jpg

&&:前面的为真执行后面的

||:前面的为假执行后面的

3.4文件测试

5adc4747d5a1c98a76eaf7ce1365eafea12.jpg

0cdc0aa7b766cc0a26a55336d1edf45a592.jpg

3.5布尔运算符

afaae7773005ec0849ac71aa628dfb02d2e.jpg

3.6逻辑判断符

afbead7fa2856aee4dd173595befc85921b.jpg

3.7整数运算

f8a61a41ff6de560019001baada8090bba5.jpg

$(()):三目运算符:真——返回右边;假——返回左边

ef5693d4e3ac190fa0656e249b0c562d0fd.jpg

3.8 Shell中括号的作用

bf06bea22fd9fa84a124d95b0d966a678de.jpg

 

4 Shell流程控制

4.1 if

单分支:

if 条件; then
    命令
fi

3a346549f86c677196bae914e4b5b675bc0.jpg

双分支:

if 条件; then
    命令
else
    命令
fi

bff346651c481d4287323c318363e992378.jpg

多分支:

if 条件; then
    命令
elif 条件; then
else
    命令
fi

5556bcbc7991000354013e672149acdcde6.jpg

4.2 for

for 变量名 in 取值列表; do
    命令
done

7028efba7dcd563f967eb0df99ca178fe5d.jpg

4.3 while

while 条件; do
    命令
done

#逐行读取文件内容

5b963bff024b25a62efe24cb9339d5ba562.jpg

4.4 break和continue

break:终止循环

continue:跳出当前循环

4.5 case

case 模式名 in
          模式1)
                 命令
                  ;;
          模式2)
                 命令
                  ;;
           *)
                 不符合上述时执行命令
esac

22bc082749de75504cb1f483498b96ad658.jpg

 

 

 

 

 

 

转载于:https://my.oschina.net/u/4098328/blog/3101084

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值