快速入门shell脚本编写(一)

(超详细)Linux Shell 编程 Linuxshell编程 Shell个命令解释器,它的作用是解释执行用户输入的命令及程序等。 用户每输入条命令,Shell就执行条。这种从键盘输入命令,就可以立即得到回应的对话方式,称为交互的方式。.................................... 阅读详情

努力让自己工作变得高效,会写脚本,会用脚本,往往事半功倍。所以,从今天开始抽出一些时间学习,通过4节内容熟悉和入门shell脚本!

--------------前方高能预警,本文写的略自娱自乐,如有看着不适,请狂戳右上角----------------------

shell有两种执行命令的方式:

交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条。

批处理(Batch):用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。

我们要知道bash和sh不是一个东西,我们需要了解,bash完全兼容sh,也就是说,用sh写的脚本可以不加修改的在bash中执行。


由于本人是用vi写的,刚开始用vi会感觉这东西尼玛是人用的么,难用的要死,如果决定用vim编辑器,在开始写shell之前,还是默默的熟悉一下vim的编辑命令吧。可以参考链接http://blog.csdn.net/hnulwt/article/details/43062065

来吧,开始写shell

终端输入 vi test.sh

开始编辑输入一下内容:(其实在vi编辑器里面输入内容是最难的了!!!)

echo "Hi, SB"
read PERSON
echo "$PERSON, ni shi hou zi pai lai de dou bi ma ?"
输入完毕后,按Esc,然后输入 wq,按enter

好了已经保存并且退出了。(以上步骤如果还不够熟练,建议你换个姿势~再来一次闭嘴并且明白每个步骤的作用)

接着运行,运行的话有好几种方式,这里用俩种吧

第一种,输入 ./test.sh(注意!前面有个点,表示当前目录下)

第二种,输入 sh test.sh (当然bash test.sh也可以啦,前面说了bash对sh兼容是很好的,当然我这里不是看敲sh方便嘛,就俩个字符。(尼玛!多敲俩个字符能死。。))

好了,看看结果。咦?怎么不对。。。

Linux有个权限系统,我们这样创建的文件是没有执行权限的,因为默认创建的文件权限是 -rw-r--r--,至于不了解这一出字符的意思,可以暂时先不管,我们在后面会讲到。在执行之前需要给他加权限,命令行输入 chmod +x ./test.sh,即可,这样就增加了可执行权限。(偶尔我会简单粗暴的chmod 777 ./test.sh,当然这不是什么好方法~,这个和前面说的是有区别的哈,可以通过 ls -l | grep test.sh 查看俩个赋予权限的区别),至于上面叙述的有疑问,可以直接回复提问

好了,这下可以运行我们的程序了,敲入 ./test.sh 或 sh test.sh 运行,是不是有惊喜啊!居然说出了“Hi SB”,紧接着我输入了nima 然后后面的字符也就出来了。运行结果如下图:



变量概念

好了,第一个小程序运行成功了,接下来看看变量定义:

例子:varibleName="value"

首先有一点,变量名和等号之间不能有空格,这点千万注意,因为我们平时写其他程序的时候可能已经养成了这种习惯,在shell这里需要注意这个习惯,

然后要知道的一些变量命名规则:

1,首个字符必须为字母(a-z,A-Z)。

2,中间不能有空格,可以使用下划线(_)。

3,不能使用标点符号。

4,不能使用bash里的关键字(可用help命令查看保留关键字)。

定义好变量我们就要开始使用变量了,如何使用变量,需要在自己定义的变量名上加上大括号,然后最前面写上$字符,例如

who="dog"

echo who is ${who}?

其实变量可以直接用$who取,但是为了养成好习惯,还是加上括号吧。

接着我们对shell的变量类型做个了解,有三种变量:

1 局部变量
局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
2 环境变量
所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
3 shell变量

shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行


shell中一些比较特殊的变量:

特殊变量含义
$0当前脚本的文件名
$n传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$#传递给脚本或函数的参数个数。
$*传递给脚本或函数的所有参数。
$@传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$?上个命令的退出状态,或函数的返回值。
$$当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。
这些变量我们留在这里备份,有用到就可以查。

算数运算

Bash 支持很多运算符,包括算数运算符、关系运算符、布尔运算符、字符串运算符和文件测试运算符。
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

接着写一小段shell,按照下图:

# /bin/bash
value=`expr 2 + 2`
echo "Total value :${value}"
图中有几个点要注意,第一行是linux的注释,以#号开头。

在第二行中注意赋值地方是没有空格的,而在计算表达式的时候之间是有空格的。 expr 2 + 2表达式被 ` 号括起来。注意 · 号并不是单引号,而是键盘上Esc下面的符号。(半角英文模式)

运行结果

Lee@Lee-PC /Desktop
$ sh test.sh
Total value :4

好了接着跟我一起输入如下内容:

# /bin/bash
a=10
b=20

value=`expr 2 + 2`
echo "Total value :${value}"

value=`expr $a \* $b`
echo "a * b : ${value}"

value=`expr $b % $a`
echo "a % b : ${value}"

if [ $a == $b ]
then
    echo "a equals b"
fi

if [ $a != $b ]
then
    echo "a not equals b"
fi

一起看看运行结果是不是相同。

$ sh test.sh
Total value :4
a * b : 200
a % b : 0
a not equals b

对上面稍做说明:

在计算a * b的时候,我们的表示有用到转义字符 \ (反斜杠) 

条件表达式要放在方括号之间,并且要有空格,例如 [$a==$b] 是错误的,必须写成 [ $a == $b ]

if...then...fi 是条件语句,后面我们会对其再进行了解

关系运算

接着上面的脚本,我们继续编辑输入:

if [ $a -eq $b ]
then
    echo "$a -eq $b"
else
    echo "a not equals b "
fi

if [ $a -gt $b ]
then
    echo "$a gt $b"
else
    echo "a not greater than b"
fi

if [ $a -le $b ]
then
    echo "$a le $b"
else
    echo "a not less or equal to b"
fi

运行结果:(有前面编辑输入过的内容哈)

$ sh test.sh
Total value :4
a * b : 200
a % b : 0
a not equals b
a not equals b
a not greater than b
10 le 20

好了,写脚本的时候就能猜出来-gt 和-le的作用吧。我们系统的来看看

关系运算符列表

运算符说明举例
-eq检测两个数是否相等,相等返回 true。[ $a -eq $b ] 返回 true。
-ne检测两个数是否相等,不相等返回 true。[ $a -ne $b ] 返回 true。
-gt检测左边的数是否大于右边的,如果是,则返回 true。[ $a -gt $b ] 返回 false。
-lt检测左边的数是否小于右边的,如果是,则返回 true。[ $a -lt $b ] 返回 true。
-ge检测左边的数是否大等于右边的,如果是,则返回 true。[ $a -ge $b ] 返回 false。
-le检测左边的数是否小于等于右边的,如果是,则返回 true[ $a -le $b ] 返回 true。


这次我们的shell脚本学习就到这里,后面还有一些内容一些运算符,还有字符串等等东西。


shell快速入门 上面的例子中,script.sh是个包含 shell 解释器可以识别并执行的命令的普通文本文件,sh和bash是 shell 解释器程序。第二种情况,调用echo时只给了它个参数(整个$INPUT 的值,包括其中的空格)。抑制(不显示)输出结果中任何结尾的换行字符(只在%b 格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略。使用流,我们能将个程序的输出发送到另个程序或文件,因此,我们能方便地记录日志或做些其它我们想做的事。 阅读详情

相关推荐

快速入门shell脚本编写()

从这节主要学习 控制语句、循环语句 注释、shell多行注释 shell单行注释很简单,只需在每行行首增加#,但是他其实是没有提供专门的多行注释的方法的,所以我们采用投巧的方式来多行注释,用EOF分界符来多行注释,如下: 1 #! /bin/sh 2 3 file="/Desktop/file.test" 4 5 <<EOF 6 if [ -r $file ]

做一个有思想的人 3454

Linux系统shell脚本编写

声明: 如果您有更好的技术与作者分享,或者商业合作; 请访问作者个人网站 http://www.esqabc.com/view/message.html 留言给作者。 如果该案例触犯您的专利,请在这里:http://www.esqabc.com/view/message.html 留言给作者说明原由 作者经查实,马上删除。 手机留言请访问:http://www.esqabc.com ...

esqabc的博客 1万+

Android开发必备:Shell 脚本语法基础

Shell脚本Android开发中提升效率的重要工具,可用于自动化编译、设备调试和日志分析等场景。文章系统介绍了Shell脚本的核心语法:1.基础认知,包括脚本创建和执行方式;2.变量定义与使用规则,包括作用域和环境变量;3.运算符使用,涵盖算术、比较和逻辑运算;4.流程控制结构,如条件判断和循环;5.函数封装,实现代码复用。掌握这些语法后,开发者可编实用脚本,如自动打包和测试平台上传脚本,并可通过文本处理命令进步优化日志分析等复杂任务。

学无止境 2万+

教你如何编shell脚本

shell脚本编程规范 在些复杂的Linux维护工作,大量重复性的输入与交互操作不但费时费力,而且容易出错,而编个恰好片的shell脚本程序,可以批量处理、自动化地完成系列维护任务,大大减轻管理员的负担。 1、shell脚本应用场景 Shell脚本shell scrip)就是将要执行的命令按顺序保存到个文件文件,并给该文件可执行权限,方便次性执行的个程序文件。主要是方便管理员进行设置或管理,可结合各种shell控制语句以完成更复杂的操作。常用于重复性操作、批量事务处理、自动化运维、服务运

qq_38135115的博客 2万+

Linux开发——shell脚本

Shell个用 C 语言编的程序,它是用户使用 Linux 的桥梁。Shell 既是种命令语言,又是种程序设计语言。Shell 是指种应用程序,这个应用程序提供了个界面,用户通过这个界面访问操作系统内核的服务。Shell 脚本shell script),是种为 shell脚本程序。在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。数组名 =(值 1 值 2 . . . 值n)

戚晨夕的博客 9577

超详细shell脚本编程快速入门

文章目录 1.shell简介 1.1 什么是shell 1.2 shell脚本 1.3 运行shell脚本 1.4 shell注释 1.5 shell的基本步骤 2.shell变量 2.1 命名变量 2.2 使用变量 2.3 变量类型 2.4 变量操作 3.shell字符串 3.1 字符串类型 3.2 字符串操作 4.shell数组 4.1 定义数组 4.2 数组操作 5.shell传递参数 6.shell运算符

qinjie的博客 9万+

Shell 脚本快速入门

本文介绍了关于linux Shell脚本的相关知识,其需要定的linux基础,小白可以参考linux 快速入门这篇文章,有了linux基础才能更好理解本文,大佬随意。

qq_56109699的博客 1039

LinuxShell编程():扩展与脚本编写基础

本文系统介绍了Shell扩展机制,涵盖大括号扩展、波浪号扩展、变量扩展、命令替换和文件名扩展等核心功能,介绍了通配符匹配规则与防扩展措施。同时,介绍了Shell脚本脚本执行方式、权限要求、退出代码机制以及基础流程控制结构,包括if条件判断、for/while循环和case分支,为Shell自动化任务提供实用指导。

D2005_10_25的博客 1383

Shell快速入门

本文主要介绍了Shell概述、Shell脚本入门Shell语法、cut、awk、正则表达式的内容。

软工星球的博客 1945

Linux shell脚本编写快速入门

形式1:使用function关键字定义# cmd... }形式2:与C语言类似# cmd... }/bin/bashfunc(){func。

weixin_44498318的博客 2554

Shell脚本

做 Java 的肯定都接触过 Linux 系统,那么很多时候我们在开发的过程中都是把我们项目打成个jar包,或者是war包的形式,然后通过 XFTP 上传到我们服务器的指定目录,然后运行端启动脚本,让我们得项目变得可以访问 就像 ./sh service.sh start 然后启动我们好的 sh 的shell脚本。接下来我们就来学习下关于 Shell 脚本是如何出来的。 Shell 脚本 Shell 脚本是什么?Shell个命令解释器,它的作用是解释执行用户输入的命令及程序等,也就是说,我们用

懿的博客 1125

shell 脚本入门

、什么是shell 脚本: 如果此时需要在终端中输入系列命令完成些操作,但是我们条输入命令,这样就会很麻烦。那么有没有种方式可以将很多条命令放到个文件里面,然后直接运行这个文件即可?有!就是 shell 脚本shell 脚本类似 windows 的批处理文件,shell 脚本就是将连续执行的命令个文件。 shell 脚本提供数组、循环、条件判断等功能。shell 脚本般是 Linux 运维或者系统管理员需要掌握的。 二、shell 脚本法: shell 脚本是个纯文本文件,命令

莘莘的博客 1万+

如何Shell脚本及其简单语法讲解

Linux中.sh文件是脚本文件,般都是bash脚本。文件后缀名为.sh,其中包含系列要由操作系统的命令解释器执行的命令。在 Unix 和类 Unix 操作系统中,通常使用 Bourne Shell(sh)或其衍生的 Shell(如 Bash、Zsh)来执行这些脚本,本文叙述的都是Bash Shell脚本

weixin_52465385的博客 4911

Shell脚本入门:环境变量和自定义变量

文章目录Shell变量:环境变量目标Shell变量的介绍变量类型系统环境变量介绍Shell的配置文件分类环境变量分类查看当前Shell系统环境变量查看Shell变量(系统环境变量+自定义变量+函数)常用系统环境变量小结Shell变量:自定义变量目标自定义变量介绍分类自定义局部变量介绍定义与使用变量删除自定义常量自定义全局变量父子Shell环境介绍自定义全局变量介绍自定义全局变量语法案例需求案例实现步骤案例演示结论小结 Shell变量:环境变量 目标 1、理解什么是系统环境变量? 2、掌握常用的系统环境变量都

m0_51340928的博客 2万+

Shell脚本编程(详解)

Shell种命令行解释器,也是操作系统与用户之间的接口。它允许用户通过键入文本命令来与操作系统交互,执行各种任务,包括文件操作、进程管理、系统配置等。Shell还可以用于编脚本,自动化执行系列命令,从而简化重复性的任务。

weixin_52270066的博客 1万+

脚本学习

、初识脚本shell类介于系统内核与用户之间的解释程序。 脚本类使用特定语言,按预设顺序执行的文件,批处理、宏、解释型程序二、编shell脚本1)如何建立shell脚本1) vim test.sh #般情况下脚本的结尾为".sh"这不是系统规定的,但是是种业界规范2) #!/bin/bash #脚本头的法,这是脚本使用的解释器,也就是脚本运行时默认开启的子s

携手凡生的博客 1735
上一篇: vi vim编辑器常用快捷键,快捷键查询
下一篇: 快速入门shell脚本编写(二)
hnulwt
博客等级 码龄14年 140粉丝 44原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值