linux中写脚本一般用语言,shell脚本语言的使用(超全超详细)

1、shell的概述

shell 是一种脚本语言

脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译)

shell 既是应用程序 又是一种脚本语言(应用程序 解析 脚本语言)

shell命令解析器:

系统提供 shell命令解析器: sh ash bash

查看自己linux系统的默认解析:echo $SHELL

72df677b3ec4861bdc0aefddbf713988.png

77b9a9e7eec396dd28d6e55a0bc13d84.png

954db106ed84b5e51bde539927e45241.png

shell脚本是一种脚本语言,我们只需使用任意文本编辑器,按照语法编写相应程序,增加可执行权限,即www.cppcns.com可在安装shell命令解释器的环境下执行

2、脚本的调用形式

打开终端时系统自动调用:/etc/profile 或 ~/.bashrc

/etc/profile

此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文

82e4d25439cbdc3f7e3657e4f792af7a.png

3、shell语法初识

3.1、定义以开头:#!/bin/bash

#!用来声明脚本由什么shell解释,否则使用默认shell

cca64d37e7624ffcd8a2a6e5910ef46b.png

3.2、单个"#"号代表注释当前行第一步:编写脚本文件

29c4adbb079e26620e701f4367054dc1.png

第二步:加上可执行权限

chmod +x xxxx.sh

b407e0d27547857cc29237a1f4b8da98.png

第三步:运行

1c08918baab66378a6978d1cd64deba9.png

三种执行方式 (./xxx.sh bash xxx.sh . xxx.sh)

三种执行方式的不同点(./xxx.sh bash xxx.sh . xxx.sh)

./xxx.sh :先按照 文件中#!OMkIfDhp指定的解析器解析

如果#!指定指定的解析器不存在 才会使用系统默认的解析器

bash xxx.sh:指明先用bash解析器解析

如果bash不存在 才会使用默认解析器

.xxx.sh 直接使用默认解析器解析

三种执行情况:(重要)

15c83e251815b28ec621a750a6c12669.png

注意:windows下 写脚本 在linux下执行 注意

e9375f9daa5b3c1a8f794e8c893d819f.png

执行结果:

c1fda19fefb841b47e4ae8c2f645b247.png

将windows文件 转换成 unix文件

方法一:dos2unix 如果没有该插件 需要安装

sudo apt-get install dos2unix

dos2unix shell脚本

转换成功就可以执行运行

方法二:

需要用vi打开脚本,在最后一行模式下执行

:set ff=uni

8039c542dfcf4ae2d13090be2315e49a.png

4、变量

定义变量

变量名=变量值

如:num=10

引用变量

$变量名

unset :清除变量值

d68c451ba3538601ad1d88fd262e93e6.png

运行结果:

e212c9b009202f17681e7aecd5094b7d.png

从键盘获取值read

24acdb192a22546c669d6b83eb6e36c8.png

运行结果:

4d482f0aadb18c02e56ebc6667f79e5c.png

案例:

在一行上显示和添加提示 需要加上-p

bf682c50a2a3ccbe1456de029d8fd04b.png

运行结果:

a64a8c1f9e3df498c219772a7ea75687.png

案例:读取多个值

766486b0973740265b5e971c4c84cd7f.png

运行结果:

319cfe45b9ecf6798353fa482d43f11d.png

案例只读变量:

4a0b49f1980cd606630009671fce50bc.png

运行结果:

bb05d9d46c31db2365d429985dfc868c.png

查看环境变量:env

cad3411037cf4e1951d3e9edb3633155.png

76d5eed144267b7d8a0ca38641214dc4.png

导出环境变http://www.cppcns.com量(其他shell识别该变量)

source 脚本文件

source命令用法:

source FileName

作用:在当前bash环境下读取并执行FileName中的命令。

注:该命令通常用命令“.”来替代。

如:source .bash_rc 与 . .bash_rc 是等效的。

注意:source命令与shell scripts的区别是,

source在当前bash环境下执行命令,而scripts是启动一个子shell来执行命令。这样如果把设置环境变量(或alias等等)的命令写进scripts中,就只会影响子shell,无法改变当前的BASH,所以通过文件(命令列)设置环境变量时,要用source 命令。

26d2d88de00c6b69ae0172a745a4f6c6.png

5e7ac51079406901775621f296d22cb9.png

可以在终端中读取:

c86ed7c60c52e955299148d2e6c5c7dc.png

在其他sh脚本读取:

5c03ecceab6b8bde0f74a84cbf274dde.png

运行结果:

d0baca87b434d3ecfaba7e03cf3a4914.png

注意事项:

1、变量名只能包含英文字母下划线,不能以数字开头

1_num=10 错误

num_1=20 正确

2、等号两边不能直接接空格符,若变量中本身就包含了空格,则整个字符串都要用双引号、或单引号括起来

3、双引号 单引号的区别

双引号:可以解析变量的值

单引号:不能解析变量的值

3f56c436e39fa5cb10227e2840858107.png

运行结果:

234e7e9f278d6ab06ab02a57ecb96dc3.png

如果想在PATH变量中 追加一个路径写法如下:(重要!!!!)

export PATH=$PATH:/需要添加的路径

5、预设变量

shell直接提供无需定义的变量

cbc92fd49055557b989beab5ad123514.png

案例:

ab9b5f07be41ea84c31bac929dd86bb2.png

运行结果:

1e0ac49dff280d0760236c70d4754309.png

脚本标量的特殊用法

352c9c30ad1577fb3b88400a91c46ea4.png

de72f1a741e079bc7c00815878e539d7.png

35c138a3e19080e4cb5dedd7bae86746.png

加-e转义 才起换行作用

2da09016358ef05da2bbacdf5fbcfb23.png

()由子shell 完成

94b5bcf55a88f34b5cb21de4c3fdc45d.png

{}由当前的shell执行

6a4004117d49ea62f12a547b381f6b6a.png

6、变量的扩展

6.1、判断变量是否存在

64c3abb63d0399f285ec81aa5e342203.png

71bef70d98d973e7ed9600875a92e387.png

6.2、字符串的操作

d31dbbeeabcccd06bf1616815fed3083.png

7、条件测试

test命令:用于测试字符串、文件状态和数字

test命令有两种格式:

test condition 或[ condition ]

使用方括号时,要注意在条件两边加上空格。

7.1、文件测试

03ab89d08d8f6c1ba8e8364c2d67ab28.png

a5cd0d374b788c4eb0092e5e7eea3caa.png

7.2、字符串测试

de4bbaac2305dafe7b1dd62353af4d23.png

2c4c45abec09f1ac5d71502bc88a30bc.png

c2d19e4523bed66fd9f18f7805e8b341.png

7.3、数值测试

d4cc498e4ed0d67b23b036da9e94d8d4.png

d87b736e2d64d33d002b95f58b04c77c.png

c16dd62c343de0c79b839b85d58cf0d3.png

7.4、符合语句测试

7ccd5625ea3008345746d724021fef37.png

e1d6a7b1d302e2e206c2851746e1b452.png

8、控制语句

d4174ecaa24bca164661bd52e034610c.png

8.1、if控制语句

格式一:

if [条件1]; then

执行第一段程序

else

执行第二段程序

fi

格式二:

if [条件1]; then

执行第一段程序

elif [条件2];then

执行第二段程序

else

执行第三段程序

fi

案例:

bc60d2f707df66b639fed8fa393d8d16.png

案例:判断当前路径下有没有文件夹 有就进入创建文件 没有 就创建文件夹 再进入创建文件

d3bdb9d9eb8f056f1164d96e06046f95.png

运行结果:

d51c5dba692d4c9779fcc1fd0098adca.png

案例:

68aa83cbdcb5270781d10199df01cdb5.png

运行结果:

efe4998c9b716c9940948e5707272ecf.png

8.2、case

86e5d402e7f871a0e1537be73a9944a2.png

fcc0fc9978bec001cd54d1871e56596c.png

8.3、for循环语句

08c31f58ae86dd8cfd0ec7fcb29a4aa7.png

f22cfef49acc37d72b8984df73639d7a.png

2f213082d3916c6f9d808087f93b4a56.png

案例:

1e86f6cd7f922a218b429fd39a03c092.png

案例:扫描当前文件

953db5b15215658f3b61a149a0bed0ab.png

8.4、while

07083f6e9ea3cc16540f8715f30376df.png

e035e775cfe63a644813e2000cdb1496.png

8.5、until

18a23a7769b2a4d114690b13f5ba0299.png

72357ad36a6c869c2d8d26bfcb48ef28.png

8.6、break continue

444cd4b67560bc620da820354740247f.png

9、函数

b40a1e56eb0633a1d8dc92f1bf38d255.png

所有函数在使用前必须定义,必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用

29b28d039bc6ceb1c01e934ecaafb965.png

案例:求最值

69f6bffac4149520425be7ed43795d46.png

案例:函数分文件

d0ae320f1ba18ee26412d6f6597dc97a.png

fun.sh

fcba09946710da9b43562092eade4b96.png

24_sh.sh

48f3856cbe3a59222ea8678367fb0ecd.png

到此这篇关于shell脚本语言的使用(超全超详细)的文章就介绍到这了,更多相关shell脚本语言内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

本文标题: shell脚本语言的使用(超全超详细)

本文地址: http://www.cppcns.com/os/linux/309629.html

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值