Shell脚本之旅
文章平均质量分 72
实战脚本
sjwangjinbao
这个作者很懒,什么都没留下…
展开
-
跟我一起写Shell脚本之二十三--标准输入和输出,以及重定向
1、什么是标准输入和输出当我们执行一个shell命令行时,一般会自动打开三个标准文件1)标准输入文件(stdin),通常对应终端的键盘;2)标准输出文件(stdout),默认对应终端的屏幕;3)标准错误输出文件(stderr),默认对应终端的屏幕。命令从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。因为Linux里一切皆是文件,所以标准输入和输出也不例外,也是文件。是文件就有文件描述符,这三个标准文件的文件描述符是固定的:1)标准输入文件原创 2021-07-17 18:19:29 · 711 阅读 · 0 评论 -
跟我一起写Shell脚本之二十二--常用命令(xargs)
1、介绍 od是Octal Dump的简写,用于将指定文件内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符。 其语法如下:od [<选项><参数>] [<文件名>] 详细命令选项介绍:-A,--address-radix=RADIX: 指定地址(文件offset)用什么基数显示,包括: d 十进制 o 八进制(系统默认值) ...原创 2021-07-06 22:16:39 · 285 阅读 · 0 评论 -
跟我一起写Shell脚本之二十一--常用命令(od)
1、介绍 od是Octal Dump的简写,用于将指定文件内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符。 其语法如下:od [<选项><参数>] [<文件名>] 详细命令选项介绍:-A,--address-radix=RADIX: 指定地址(文件offset)用什么基数显示,包括: d 十进制 o 八进制(系统默认值) ...原创 2021-07-04 20:57:58 · 650 阅读 · 0 评论 -
跟我一起写Shell脚本之二十--常用命令(cut)
1、介绍 cut命令也是我们写脚本时经常用到的命令,主要用来显示文件或者标准输入的每一行,从xxx1到xxx2的内容。常用方法可以总结到一张表里:语法 说明 cut [-nb] [file] -b是以字节为单位进行分割,但是遇到多字节字符的时候有可能会出现乱码。所以加上-n选项就可以解决。 cut [-c] [file] -c是以字符为单位进行分割 cut [-df] [file] -f是以域为单位进行分割。 -d指定分割域的方法 ..原创 2021-06-27 10:10:47 · 456 阅读 · 0 评论 -
跟我一起写Shell脚本之十九--常用命令(tail)
1、介绍 tail也是我们经常在脚本中用到的一个命令,它和head类似,但是如名字所示,它主要用来显示文件的结尾部分内容。我们可以用man tail查看下它的介绍:NAME tail - output the last part of filesSYNOPSIS tail [OPTION]... [FILE]...DESCRIPTION Print the last 10 lines of each FILE to standar...原创 2021-06-25 23:01:36 · 2680 阅读 · 0 评论 -
跟我一起写Shell脚本之十八--常用命令(head)
1、介绍 head也是我们经常在脚本中用到的一个命令,主要用来显示文件的开头部分内容。我们可以用man head查看下它的介绍:NAME head - output the first part of filesSYNOPSIS head [OPTION]... [FILE]...DESCRIPTION Print the first 10 lines of each FILE to standard output. With mor...原创 2021-06-25 20:02:53 · 4088 阅读 · 0 评论 -
跟我一起写Shell脚本之十七--常用命令(sed)
1、介绍sed也是我们在写脚本时经常用到的一个非常强大的命令。sed是一个非交互流式文本编辑器,可以对文本文件进行增、删、改、查等操作,支持按行、按字段、按正则匹配文本内容,非常灵活和方便,特别适合于大文件的编辑。sed在处理文本时会逐行读取文件内容,读到匹配的行就根据指令做操作,不匹配就跳过。sed能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上。还可以对原文件改动,但是不会再屏幕上返回结果。2、语法sed的语法有两种原创 2021-05-16 21:55:46 · 179 阅读 · 0 评论 -
跟我一起写Shell脚本之十六---命令(wc)
今天我们来了解下wc命令的用法。1、基本用法wc命令是用来统计文件的行数、字节数等。其用法如下:wc [-lcmw] [file...]-l 统计行(line)数-w 统计字(word)数-c 统计字节(character)数我们写个脚本试验下:#!/bin/bashif [ $# -gt 0 ]; then filename=$1else filename="027_function1.sh"fiecho `wc $file原创 2021-05-06 20:43:26 · 1868 阅读 · 0 评论 -
跟我一起写Shell脚本之十五---写文件
1、创建一个新文件并写入内容我们写脚本如下:#!/bin/bashecho "Begin to write our own file"if [ $# -lt 1 ]; then filename="myfile1"else filename=$1ficat>$filename<<EOFfirst line2nd linehahahahhohhohoEOF<<EOF 表示当遇到EOF时结束输入。执行结果原创 2021-05-05 11:01:42 · 6942 阅读 · 0 评论 -
跟我一起写Shell脚本之十四---函数
1、定义当有多条语句会被重复使用时,我们可以考虑封装成一个函数。函数的语法有如下两种:函数名(){ xxx}或者function 函数名(){ xxx}2、简单例子我们写个简单的函数的例子027_function1.sh:function myfunc(){ echo "my function" "$1"}myfunc aamyfunc bbmyfunc cc执行结果(用bash可以,但是用sh会报错):$ ...原创 2021-04-27 21:27:21 · 113 阅读 · 0 评论 -
跟我一起写Shell脚本之十三---循环(4 for 文件循环)
for循环大体可以分为如下3种类型:字符循环,数字循环,文件循环。今天我们了解文件循环,直接上例子:1、文件循环例子1写脚本025_for_file1.sh#!/bin/bashfor file in $(ls /sys)do echo $file;done 执行结果:$ sh 025_for_file1.shblockbusclassdevdevicesfirmwarefshypervisorkernelmodulepowe...原创 2021-04-26 20:41:45 · 142 阅读 · 0 评论 -
跟我一起写Shell脚本之十二---循环(3 for 数字循环)
for循环大体可以分为如下3种类型:字符循环,数字循环,文件循环。今天我们了解数字循环,直接上例子1、数字循环例子一 写脚本022_for_dig1.sh:#!/bin/bashfor i in $(seq 10 20)do echo $i; echo $(expr $i + 100); echo $(($i + 200));done 执行结果:$ sh 022_for_dig1.sh1011021011111...原创 2021-04-25 20:14:10 · 910 阅读 · 0 评论 -
跟我一起写Shell脚本之十一---循环(2 for 字符循环)
for循环大体可以分为如下3种类型:字符循环,数字循环,文件循环。今天我们了解字符循环,直接上例子:1 字符循环例子1写脚本018_for_char1.sh#!/bin/bashfor i in aa bb cc dd eedo echo $idone 执行结果$ sh 018_for_char1.shaabbccddee2 字符循环例子2写脚本019_for_char2.sh#!/bin/bashmyinput="111...原创 2021-04-20 22:14:51 · 291 阅读 · 0 评论 -
跟我一起写Shell脚本之十---循环(1 while)
1、语法while语法:当满足某个条件时,就进入循环while [ 条件 ]do xxxdoneuntil语法:当满足某个条件时,就退出循环until [ 条件 ]do xxxdone2、例子1我们计算1到n加起来的和,用while写脚本016_while.sh:#!/bin/bashif [ $# -ne 1 ]; thenecho "please input a parameter to caculate"echo "For exampl原创 2021-04-11 10:54:23 · 440 阅读 · 0 评论 -
跟我一起写Shell脚本之九---条件判断(3 case)
1、语法case $XXX in "xxx1") do something1 ;; "xxx2") do something2 ;; "xxx3) do something3 ;; *) do somethingall ;;esac2、例子#!/bin/bashcase $1 in "aaa")原创 2021-04-04 11:02:52 · 94 阅读 · 0 评论 -
跟我一起写Shell脚本之八---条件判断(2 if)
1、语法有三种语法。1.1if [ xxx ]; thendo some thingfi1.2if [ xxx ]; thendo some thingelsedo anothing thingfi1.3if [ xxx ]; thendo some thing1elif [ yyy ]; thendo some thing2elsedo anothing thingfi2、例子2.1我们创建文件012_if.sh:#!/b..原创 2021-04-04 10:43:14 · 299 阅读 · 0 评论 -
跟我一起写Shell脚本之七---条件判断(1 判断)
1、test命令test 命令可以用于检查某个条件是否成立,它可以进行数值、字符、文件的测试。1.1 数值判断例如test num1 -eq num2可以判断num1和num2是否相等。-eq equal:判断num1和num2是否相等 -ne not equal:判断num1和num2是否不相等 -gt greater than:判断num1是否大于num2 -lt less than:判断num1是否小于num2 -ge greater th原创 2021-04-01 20:04:39 · 408 阅读 · 0 评论 -
跟我一起写Shell脚本之六---变量(4 其它)
1、declare1.1 概览declare与typeset完全相同,其的定义如下:declare [+/-][选项] 变量名选项:-:给变量舍得类型属性 +:取消变量的类型属性 -i:将变量声明为整型 -x:将变量声明为环境变量 -r:将变量声明为只读变量 -a:将变量声明为数组型 -p:查看变量的被声明的类型1.2 整型我们在终端执行:aaa=188+168+20$ echo ${aaa}188+168+20我们期待的结果是a为各个数加起来的结原创 2021-03-28 11:17:00 · 108 阅读 · 0 评论 -
跟我一起写Shell脚本之六---变量(3 环境变量)
环境变量其实就是全局变量。1、常用的环境变量HOME 用户主目录的完整路径 PATH 用于保存用冒号分隔的目录路径名,shell将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令名称一致的可执行文件将被执行。 SHELL 当前用户使用的Shell UID 当前用户的UID LOGNAME 当前用户的登录名 HOSTNAME 主机名称 HISTSIZE history命令最大记录的条数 2、查看环境变量可以用env命令原创 2021-03-08 20:53:40 · 392 阅读 · 0 评论 -
跟我一起写Shell脚本之五----变量(2 特殊变量)
1、特殊变量总结Shell中有很多特殊变量,我们总结如下: $0 当前脚本的名字,包含完整路径 $n 传入脚本或函数的第n个参数,注意10以上要用大括号 $# 传入脚本或函数的参数个数 $* 传入脚本或函数的所有参数 $@ 传入脚本或函数的所有参数,与$*有时候会有不同 $?原创 2021-03-02 22:00:24 · 144 阅读 · 0 评论 -
跟我一起写Shell脚本之四----变量(1 用户变量)
Shell变量是一种弱变量,不关心是什么类型和含义。Shell分3种类型: 用户变量、环境变量、特殊变量。这里我们介绍的是用户变量。1、变量定义变量定义的语法如下:变量名=变量值有以下注意事项:1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写;2)等号两侧不能有空格;3)在bash中,变量默认类型都是字符串类型,无法直接数值运算;4)变量的值如果有空格,需要使用双引号或单引号括起来;5)不能使用bash里的关键字。我们可以直.原创 2021-02-28 19:56:38 · 445 阅读 · 0 评论 -
跟我一起写Shell脚本之三----注释
1、单行注释脚本中以#开头的行,就是注释,会被解释器忽略。我们将之前的脚本001_helloworld.sh修改成002_comment.sh:#!/bin/bash#It is a comment, begin output "hello world"echo "Hello World!"#Do not output "Hello World2!"#echo "Hello World2!"echo "Hello World3!"然后用有-x参数的方式执行得到如下结果:原创 2021-02-27 14:35:58 · 731 阅读 · 0 评论 -
跟我一起写Shell脚本之二----初识Shell(2)
1、交互式上次提到,Shell有两种执行命令的方式:交互式(Interactive),用户输入一条命令,Shell就解释执行一条;批处理(Batch),用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。而我们举了一个例子001_HelloWorld.sh,就是第二种方式:批处理方式。其实我们也可以用交互式来进行。比如我们在控制台输入:echo "Hello World!"一样可以得到:...原创 2021-02-21 10:02:35 · 179 阅读 · 0 评论 -
跟我一起写Shell脚本之一----初识Shell
1、什么是Shell?让我们先来看看百度下看看Shell的解释:Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它类似于Windows下的cmd.exe,可以交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,但是Shell是不需要进行编译的,.原创 2021-02-19 21:27:39 · 276 阅读 · 0 评论