第1期Ubuntu入门篇:【18】shell脚本入门

简介

我们已经能够熟练的在终端中输入命令来完成一些常用的操作,但是我们都是一条一条输入命令。这样会很麻烦,那么有没有一种方式可以将很多条命令放到一个文件里面,然后直接运行这个文件即可?肯定有,这个就是shell脚本!

shell脚本类似windows的批处理文件,shell脚本就是将连续执行的命令写成一个文件。shell脚本提供数组、循环、条件判断的等功能。

shell脚本一般是Linux运维或者系统管理员要掌握的,作为嵌入式开发人员,只需要掌握shell脚本最基础的部分即可

目标

了解Ubuntu下shell脚本。

阅读基础

熟悉计算机。

环境说明

  • windows10

参考资料

  • 原子文档:I.MX6ULL开发指南 第三章
  • NXP官方文档:I.MX6ULL参考手册、数据手册

第一个shell脚本

输出命令echo

使用echo作为shell的输出。echo命令用于在终端设备上输出字符串或变量提取后的值,这是在Linux系统中最常用的几个命令之一,但操作却非常简单。人们一般使用在变量前加上$符号的方式提取出变量的值,例如:$PATH,然后再用echo命令予以输出。或者直接使用echo命令输出一段字符串到屏幕上,起到给用户提示的作用。

语法格式:echo [选项] [字符串]

常用参数:

-n 不输出结尾的换行符
-e “\a” 发出警告音
-e “\b” 删除前面的一个字符
-e “\c” 结尾不加换行符
-e “\f” 换行,光标扔停留在原来的坐标位置
-e “\n” 换行,光标移至行首
-e “\r” 光标移至行首,但不换行
-E 禁止反斜杠转移,与-e参数功能相反
—version 查看版本信息
–help 查看帮助信息

输出字符串脚本

shell脚本是个纯文本文件,扩展名为.sh。命令从上而下,一行一行的开始执行。shell脚本第一行一定要为:#!/bin/bash表示使用bash

在用户目录下创建文件my.sh。

BolgImage-20210814130900

比如在终端输出一个hello world!,使用命令echo "hello world !"在终端输出如下图:

BolgImage-20210814131350

使用shell脚本来实现同样的功能,编写内容如下图:

BolgImage-20210814131123

编写完成。

BolgImage-20210814131654

要执行shell脚本,必须添加文件权限,添加所有权限使用命令chomd 777。如下图:

BolgImage-20210814132206

交互式shell脚本

输入输出命令

​ 使用read作为shell的输入。Linux read命令用于从标准输入读取数值。read 内部命令被用来从标准输入读取单行数据。这个命令可以用来读取键盘输入,当使用重定向的时候,可以读取文件中的一行数据。

read [选项]

常用参数:

-a 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符
– d 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志
– p 后面跟提示信息,即在输入前打印提示信息
– e 在输入的时候可以使用命令补全功能
– n 后跟一个数字,定义输入文本的长度
– r 屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了
– s 安静模式,在输入字符时不再屏幕上显示
– t 后面跟秒数,定义输入字符的等待时间
– u 后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的

单个参数输入脚本

编写shell,功能输入名字,输出名字。如下:

#! /bin/bash
echo "please input name:"
read name
echo "your name:"$name

输入命令./my.sh,执行脚本,安照提示输入名字,输出成功。如下图:

BolgImage-20210814133533

多个参数输入脚本

编写shell,功能输入年龄和身高,输出年龄和身高。如下:

#! /bin/bash
read -p "input your age and height:" age height
echo "your age=$name,your height=$height"

输入命令./my.sh,执行脚本,提示输入年龄和身高,输出成功。如下图:

BolgImage-20210814141727

shell脚本的数值计算

shell仅支持整形,可以进行数值计算。格式:$((表达式))

编写shell,功能求两个整数的和,输出两个整数的和。如下:

注意:total后的=号不能有空格。

#! /bin/bash
echo "please input two int num:"
read -p "first num:" first
read -p "second num:" second
total=$(($first+$second))
echo "$first + $second = $total"

输入命令./my.sh,执行脚本,提示输入第一个数和第二个数,输出成功。如下图:

BolgImage-20210814142645

test测试命令

test命令

test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

test 命令期望在命令行中找到一个参数,当 shell 没有为变量赋值时,则将该变量视为空。这意味着在处理脚本时,一旦脚本寻找的参数不存在,则 test 将报告该错误。

语法格式:

test [表达式]

数值测试:

-eq (=) 等于则为真
-ne (!=) 不等于则为真
-gt (>) 大于则为真
-ge (>=) 大于等于则为真
-lt (<) 小于则为真
-le (<=) 小于等于则为真

字符串测试:

参数 说明
= 等于则为真
!= 不相等则为真
-z 字符串 字符串的长度为零则为真
-n 字符串 字符串的长度不为零则为真

文件测试:

参数 说明
-e 文件名 如果文件存在则为真
-r 文件名 如果文件存在且可读则为真
-w 文件名 如果文件存在且可写则为真
-x 文件名 如果文件存在且可执行则为真
-s 文件名 如果文件存在且至少有一个字符则为真
-d 文件名 如果文件存在且为目录则为真
-f 文件名 如果文件存在且为普通文件则为真
-c 文件名 如果文件存在且为字符型特殊文件则为真
-b 文件名 如果文件存在且为块特殊文件则为真

&&和||命令

cmd1 && cmd2 当cmd1执行完并且正确,那么cmd2开始执行,如果cmd1执行完毕错误,那么cmd2不执行

cmd1 || cmd2当cmd1执行完毕并正确,那么cmd2不执行,如果cmd1执行完毕错误,那么cmd2执行

测试文件是否存在脚本

编写shell,功能判断文件是否存在,存在则输出存在,不存在则输出不存在。如下:

#! /bin/bash
echo "please input file name:"
read -p "file name:" filename 
test -e $filename && echo "$filename exist" || echo "$filename not exist"

输入命令./my.sh,执行脚本,提示输入文件名ddd.txt,输出不存在。如下图:

BolgImage-20210814152644

输入命令./my.sh,执行脚本,提示输入文件名my.sh,输出存在。如下图:

BolgImage-20210814153237

测试字符串是否相等脚本

编写shell,功能判断两个字符串是否相等,相等则输出相等,不存在则输出不相等。如下:

#! /bin/bash
echo "please input two string:"
read -p "first string:" firststr
read -p "second string:" secondstr
test $firststr == $secondstr && echo "firststr == secondstr" || echo "firststr != secondstr"

输入命令./my.sh,执行脚本,提示输入文件名ddd aaa,输出不相等。如下图:

BolgImage-20210814154657

输入命令./my.sh,执行脚本,提示输入文件名ddd ddd,输出相等。如下图:

BolgImage-20210814154349

中括号[]判断符

[空格 参数 == 参数 空格]

编写shell,功能判断两个字符串是否相等,相等则输出相等,不存在则输出不相等。如下:

#! /bin/bash
echo "please input two string:"
read -p "first string:" firststr
read -p "second string:" secondstr
[ "$firststr" == "$secondstr" ] && echo "firststr == secondstr" || echo "firststr != secondstr"

输入命令./my.sh,执行脚本,提示输入文件名ddd aaa,输出不相等。如下图:

BolgImage-20210814155543

输入命令./my.sh,执行脚本,提示输入文件名ddd ddd,输出相等。如下图:

BolgImage-20210814155323

shell脚本默认参数

$0~$n,表示shell脚本的参数,包括shell脚本命令本身,shlle脚本命令本身为$0

$#:#表示最后一个参数的标号。

@:表$1、​$2、$3…

编写shell,功能运行时接受命令行输入参数,输出不同信息。如下:

#! /bin/bash
echo "file name:" $0
echo "total param num:" $#
echo "whole param:" $@
echo "first param:" $1
echo "second param:" $2

输入命令./my.sh,带参数a b执行脚本,输出信息。如下图:

BolgImage-20210814160716

最近更新

查看本文最近更新请点击

猜你喜欢

转载自blog.csdn.net/aa1319594154/article/details/119702465
今日推荐