第1期Ubuntu入门篇:18shell脚本入门
Posted aa1319594154
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第1期Ubuntu入门篇:18shell脚本入门相关的知识,希望对你有一定的参考价值。
文章目录
简介
我们已经能够熟练的在终端中输入命令来完成一些常用的操作,但是我们都是一条一条输入命令。这样会很麻烦,那么有没有一种方式可以将很多条命令放到一个文件里面,然后直接运行这个文件即可?肯定有,这个就是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。
比如在终端输出一个hello world!
,使用命令echo "hello world !"
在终端输出如下图:
使用shell脚本来实现同样的功能,编写内容如下图:
编写完成。
要执行shell脚本,必须添加文件权限,添加所有权限使用命令chomd 777
。如下图:
交互式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
,执行脚本,安照提示输入名字,输出成功。如下图:
多个参数输入脚本
编写shell,功能输入年龄和身高,输出年龄和身高。如下:
#! /bin/bash
read -p "input your age and height:" age height
echo "your age=$name,your height=$height"
输入命令./my.sh
,执行脚本,提示输入年龄和身高,输出成功。如下图:
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
,执行脚本,提示输入第一个数和第二个数,输出成功。如下图:
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,输出不存在。如下图:
输入命令./my.sh
,执行脚本,提示输入文件名my.sh,输出存在。如下图:
测试字符串是否相等脚本
编写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,输出不相等。如下图:
输入命令./my.sh
,执行脚本,提示输入文件名ddd ddd,输出相等。如下图:
中括号[]判断符
[空格 参数 == 参数 空格]
编写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,输出不相等。如下图:
输入命令./my.sh
,执行脚本,提示输入文件名ddd ddd,输出相等。如下图:
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
执行脚本,输出信息。如下图:
最近更新
以上是关于第1期Ubuntu入门篇:18shell脚本入门的主要内容,如果未能解决你的问题,请参考以下文章