




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一季度工作报告XXXXXX公司名称LOGO站长之家PPT模板树莓派应用开发第九章Shellscript9.1Shellscript基本介绍9.2Shellecho命令9.3Shellprintf命令9.4Shell传递参数9.5Shell变量9.6Shell基本运算符9.7Shell流程控制9.8Shell字符串9.9Shell数组9.10Shell函数9.11Shell输入/输出重定向9.12Shelltest命令9.13Shell判断符[]9.14Shellscript的追踪与调试9.15Shell文件包含9.16Shellscript实例9.17修改SSH登录信息
Shellscript基本介绍Shellscript是利用Shell的功能编写的程序,这个程序保存后是纯文本文件,将一些Shell
的语法与指令存储在里面,然后用正规表示法,管道命令以及数据流重导向等功能,简化我们日常的工作管理,以达到我们所想要的处理目的。Shellscript就像早期dos年代的bat文件,最简单的功能就是将许多指令编写在一起,让使用者很容易地就能够一次操作执行多个命令。Shellscript还提供了数组,循环,条件以及逻辑判断等重要功能,让使用者可以直接以Shell脚本来写程序,却不必使用类似C程序语言等传统程序编写的语法。
Shellscript环境和种类Shellscript编程跟JavaScript、php编程类似,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以。Linux的Shell种类众多,常见的有:BourneShell(目录是/usr/bin/sh或/bin/sh)BourneAgainShell(目录是/bin/bash)CShell(目录是/usr/bin/csh)KShell(目录是/usr/bin/ksh)ShellforRoot(目录是/sbin/sh)
……
BourneAgainShell,由于易用和免费,Bash在日常工作中被广泛使用。同时,Bash也是大多数Linux系统默认的Shell。在一般情况下,大家并不区分使用的Shell是BourneShell还是BourneAgainShell,所以,像#!/bin/sh,它同样也可以改为#!/bin/bash。
Shell和Shellscript的区别Shell是一个命令行解释器或者应用程序,提供了一个界面,用户通过这个界面访问操作系统内核的服务,作用是遵循一定的语法将输入的命令加以解释并传给系统。为用户提供了一个向Linux发送请求以便运行程序的接口系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shellscript既是一种命令语言,又是一种程序设计语言(Shell脚本)。作为命令语言,它互动式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统内核的一部分,但它调用了系统内核的大部分功能来执行程序、创建文档并以并行的方式协调各个程序的运行。
Shellscript编写规则1.命令的执行顺序:从上而下,自左向右。2.命令、选项、参数间的多个空格都会被忽略掉。3.空白行也将被忽略掉,按tab键所生成的空白也会被忽略掉。4.如果读取到一个Enter符号,就尝试开始执行该行命令。5.如果一行的内容太多,可以使用“[Enter]”来扩展到下一行。6."#"符号作为注释,#后面的字符将被视为注释被忽略掉,不会被执行。Shellscript文件以sh(代表Shell)为扩展名,并且必须赋予可执行权限。扩展名并不影响脚本执行,如果使用php语言写Shell脚本,可以使用php做扩展名。
编写helloworld
脚本在LX终端打开文件编辑器,新建一个文件test.sh:sudonanotest.sh在test.sh文件中输入如下内容:#!/bin/bash#Program:shows"Helloworld"inscreen.#Version1.0#History:Thisismyfirstscript#2022/10/27DZHFirstreleaseecho"HelloWorld!"exit0
良好的编写习惯建议养成良好的script撰写习惯,在每个script的文件头处还应该包含如下内容:script的功能;script的版本信息;script的作者与联络方式;script的版权宣告方式;script的历史纪录;script内较特殊的指令,使用绝对路径的方式来记录;script运行时需要的环境变量相关信息的记录和说明。
Script的执行方法一般有以下两种方法可以执行sh脚本文件:1.直接指令下达绝对路径:工作目录随意,可以使用绝对路径/home/pi/myshell.sh来执行;相对路径:假设工作目录在/home/pi/,则使用相对路径./myshell.sh来执行;变量PATH功能:将myshell.sh放在PATH指定的目录内,直接使用myshell.sh来执行。2.以bash程序来执行直接使用bash或sh来执行脚本,命令参数就是Shell脚本的文件名,这种方式,不需要在第一行指定解释器信息#!/bin/bash:bashmyshell.shshmyshell.sh
单行注释以#开头的程序行就是注释,#后的同一行内容会被解释器忽略,可以通过每一行加一个#号设置多行注释#####用户配置区开始########这里可以添加脚本描述信息#######用户配置区结束
#####
多行注释多行注释还可以使用以下格式::<<EOF注释内容...注释内容...注释内容...EOF
Shellecho命令Shell的echo指令与PHP语言的echo指令类似,都是用于字符串的输出。命令格式为:echostring#string为字符串除了简单格式,还可以使用echo实现更复杂的输出格式控制。1.显示普通字符串:echo"Itisatest"2.显示转义字符echo"\"Itisatest\""3.显示输入变量read命令从标准输入中读取一行,并把输入行的每个字段的值指定给某个自定义Shell变量。新建一个test.sh文件,输入以下代码:#!/bin/shreadnameecho"$nameItisatest"4.显示换行使用\n输出换行,新建一个sh文件,输入以下代码:echo-e"OK!\n"#-e开启转义echo"Itisatest"
Shellecho命令5.显示不换行使用\c输出不换行,新建一个sh文件,输入以下代码:#!/bin/shecho-e"OK!\c"#-e开启转义\c不换行echo"Itisatest"6.显示结果定向至文件使用>显示结果定向至文件,新建一个sh文件,输入以下代码:echo"Itisatest">myfile7.原样输出字符串,不进行转义或取变量使用'(单引号)原样输出字符串,不进行转义或取变量,新建一个sh文件,输入以下代码:echo'$name\"'8.显示命令执行结果使用`(反引号,不是单引号')显示命令执行结果,例如显示date命令的运行结果,建一个sh文件,输入以下代码:echo`date`
Shellprintf命令Printf命令使用引用文本或空格分隔的参数,外面可以在printf中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。printf命令的语法:printf格式控制字符串[参数列表]首先是使用printf的简单方法如下:echo"Hello,Shell"$printf"Hello,Shell\n"接下来,学习使用一个脚本来体现printf命令的强大功能:#!/bin/bashprintf"%-10s%-8s%-4s\n"姓名性别体重kgprintf"%-10s%-8s%-4.2f\n"郭靖男66.1234printf"%-10s%-8s%-4.2f\n"杨过男48.6543printf"%-10s%-8s%-4.2f\n"郭芙女47.9876
printf的转义序列序列说明\a警告字符,通常为ASCII的BEL字符\b退格\c不显示输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都将被忽略\f换页\n换行\r回车\t水平制表符\v垂直制表符\\反斜杠字符
Shell传递参数在执行Shell脚本时,可以向脚本传递参数。脚本内获取参数的格式一般为:$n。其中n代表一个数字,0为执行包含文件路径的文件名,1为执行脚本的第一个参数,2为执行脚本的第二个参数,后面的数字依次类推。
Shell传递参数首先需要记住几个默认的变量可以用来处理参数参数处理说明$#代表后接的传递到脚本的参数个数$*以一个单字符串显示所有向脚本传递的参数。如果"$*"用""括起来的情况,以"$1$2…$n"的形式输出所有参数。$$脚本运行的当前进程ID号$!后台运行的最后一个进程的ID号$@与$*作用相同,使用时加引号,并在引号中返回每个参数。如果"$@"用""括起来的情况,以"$1""$2"…"$n"的形式输出所有参数,其中每个变量都是独立的。$-显示Shell使用的当前选项,与set命令功能相同。$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
Shell传递参数例如我们向脚本test1.sh传递三个参数,并分别输入的代码如下:#!/bin/bashecho"测试Shell传递参数";echo"执行的文件名:$0";echo"第一个参数:$1";echo"第二个参数:$2";echo"第三个参数:$3";exit0执行脚本命令:sudochmod+xtest1.sh./test1.sh123
Shell变量在定义变量时,变量名前面不加美元符号$或者其他任何符号,变量名和等号之间不能有空格变量名的命名须遵循如下规则:(1)变量名只能使用英文字母,数字和下划线,首个字符不能以数字开头。(2)变量名中间不能有空格,可以使用下划线_。(3)变量名不能使用标点符号。(4)变量名不能使用bash里的关键字。除了显式地直接赋值,还可以用语句给变量赋值
使用变量使用一个定义过的变量,只要在变量名前面加美元符号$即可变量名外面的大括号是可选的,加大括号是为了帮助解释器识别变量的边界建议给所有变量加上大括号,这是个好的编程习惯已经赋值过的变量,还可以重新赋予变量新的值
只读变量使用readonly命令可以将变量定义为只读变量,只读变量的例如下面的例子尝试更改只读变量,结果会报错:#!/bin/bashmyurl=""readonlymyurlmyurl="https://www."值不能被改变。
删除变量使用unset命令可以删除不是只读的变量。语法:unset变量名变量被删除后不能再次使用。例如删除不是只读的变量myurl:#!/bin/bashmyurl=""unsetmyurlecho$myurl代码执行后没有任何输出。
变量类型运行Shell的三种变量:局部变量:局部变量在脚本或命令中定义,仅在当前Shell实例中有效,其他Shell启动的程序不能访问局部变量。环境变量:所有的程序,包括Shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候Shell脚本也可以定义环境变量。Shell变量:Shell变量是由Shell程序设置的特殊变量。Shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了Shell的正常运行。
Shell基本运算符Shell和其他编程语言一样,支持多种运算符,包括:(1)算术运算符(2)关系运算符(3)布尔运算符(4)字符串运算符(5)文件测试运算符
算术运算符运算符说明举例+加法`expr$a+$b`结果为30。-减法`expr$a-$b`结果为-10。*乘法`expr$a\*$b`结果为200。/除法`expr$b/$a`结果为2。%取余`expr$b%$a`结果为0。=赋值a=$b把变量b的值赋给a。==相等。比较两个数字,相等返回true。[$a==$b]返回false。!=不相等。用于比较两个数字,不相等返回true。[$a!=$b]返回true。
关系运算符运算符说明举例-eq检测两个数是否相等,相等返回true。[$a-eq$b]返回false。-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。
布尔运算符运算符说明举例!非运算,表达式为true则返回false,否则返回true。[!false]返回true。-o或运算,有一个表达式为true则返回true。[$a-lt20-o$b-gt100]返回true。-a与运算,两个表达式都为true才返回true。[$a-lt20-a$b-gt100]返回false。
逻辑运算符运算符说明举例&&逻辑AND[[$a-lt100&&$b-gt100]]返回false||逻辑OR[[$a-lt100||$b-gt100]]返回true
字符串运算符运算符说明举例=检测两个字符串是否相等,相等返回true。[$a=$b]返回false。!=检测两个字符串是否不相等,不相等返回true。[$a!=$b]返回true。-z检测字符串长度是否为0,为0返回true。[-z$a]返回false。-n检测字符串长度是否不为0,不为0返回true。[-n"$a"]返回true。$检测字符串是否不为空,不为空返回true。[$a]返回true。
文件测试运算符运算符说明举例-bfile检测文件是否是块设备文件,如果是则返回true。[-b$file]返回false。-cfile检测文件是否是字符设备文件,如果是则返回true。[-c$file]返回false。-dfile检测文件是否是目录,如果是则返回true。[-d$file]返回false。-ffile检测文件是否是普通文件(既不是目录,也不是设备文件),如果是则返回true。[-f$file]返回true。-gfile检测文件是否设置了SGID位,如果是则返回true。[-g$file]返回false。-kfile检测文件是否设置了粘着位(StickyBit),如果是则返回true。[-k$file]返回false。-pfile检测文件是否是有名管道,如果是则返回true。[-p$file]返回false。-ufile检测文件是否设置了SUID位,如果是则返回true。[-u$file]返回false。-rfile检测文件是否可读,如果是则返回true。[-r$file]返回true。-wfile检测文件是否可写,如果是则返回true。[-w$file]返回true。-xfile检测文件是否可执行,如果是,则返回true。[-x$file]返回true。-sfile检测文件是否为空(文件大小是否大于0),不为空返回true。[-s$file]返回true。-efile检测文件(包括目录)是否存在,如果是则返回true。[-e$file]返回true。
Shell流程控制Shellscript也有if语句,只不过它们在形式上有所区别,在功能上完全一样。和其他程序设计语言不同,sh的流程控制不可为空,例如PHP语言中流程控制代码如下:<?phpif(isset($_GET["q"])){
search(q);}else{
//空语句}在sh/bash里不能这样编写,如果else分支没有语句执行,那就不要写这个else语句。
ifthenfiifthenfi语句
语法格式:ifconditionthencommand1command2...commandNfi
末尾的fi就是if倒过来的拼写,表示if语句的结束。整个语句可以在终端命令提示符后写成一行:if[$(ps-ef|grep-c"ssh")-gt1];thenecho"true";fi当有多个条件要判别时,除了可以将多个条件写入一个中括号内的情况之外,还可以使用多个中括号,此时每个中括号内只写入一个判断式:["$yn"=="Y"-o"$yn"=="y"]可以被替换为["$yn"=="Y"]||["$yn"=="y"]
ifthenelsefiifthenelsefi语句语法
格式:ifconditionthencommand1command2...commandNelsecommandfi
ifthenelifthenelsefiifthenelifthenelsefi语句语法
格式:ifcondition1thencommand1elifcondition2thencommand2elsecommandNfi
fordodoneShellscript支持for循环
。for循环有两种语法,第一种主要用于非数值处理,第二种主要用于数值处理,第二种类似于c语言里边的for循环。
for循环第一种格式为:forvarinitem1item2...itemNdocommand1command2...commandNdone可以在终端命令提示符后写成一行:forvarinitem1item2...itemN;docommand1;command2…done;
whiledodonewhile循环
用于不断执行一系列命令,也用于从输入文件中读取数据。其语法格式为:
whileconditiondocommanddone
当condition条件成立时,就进行循环,直到condition的条件不成立才停止。
无限循环无限循环语法格式:while:docommanddone或者whiletruedocommanddone或者for((;;))
untildodoneuntil循环执行一系列命令直至条件为true时停止。until循环与while循环在处理方式上刚好相反。一般while循环优于until循环,但在某些时候—也只是极少数情况下,until循环更加有用。until
循环语法格式:untilconditiondocommanddonecondition一般为条件表达式,如果返回值为false,则继续执行循环体内的语句,否则跳出循环。
case...esaccase...esac为多选择语句,一般称它为开关语句,功能上与其他语言中的switch..case语句类似可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。case...esac语法格式如下:case$值in模式1)command1command2...commandN;;模式2)command1command2...commandN;;*)exit1;esac
跳出循环在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,Shell使用两个命令来实现该功能:break命令和continue命令。break命令允许跳出所有循环(终止执行后面的所有循环)。continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。
Shell字符串字符串是Shell编程中最常用的数据类型,字符串可以用单引号,也可以用双引号,也可以不用引号。1.单引号2.双引号3.拼接字符串4.获取字符串长度5.提取子字符串6.查找子字符串
Shell数组BashShell只支持一维数组,数组中可以存放多个值,并且没有限定数组的大小,初始化时不需要定义数组大小,但不支持多维数组。数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应是大于或等于0的整数。
定义数组在Shell中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:数组名=(值1值2...值n)array_name=(value1value2...valuen)例如:array_name=(value0value1value2value3)
读取数组读取数组元素值的一般格式是:${数组名[下标]}${array_name[index]}例如:valuen=${array_name[n]}
获取数组的长度获取数组长度的方法与获取字符串长度的方法相同例如:#取得数组元素的个数length=${#array_name[@]}#或者length=${#array_name[*]}#取得数组单个元素的长度lengthn=${#array_name[n]}
关联数组Bash支持关联数组,可以使用任意的字符串、或者整数作为下标来访问数组元素。关联数组使用declare命令来声明,语法格式如下:declare-Aarray_name选项-A就是用于声明一个关联数组。关联数组的键是唯一的。
实例:创建一个关联数组site,并创建不同的键值:declare-Asite=(["google"]=""["baidu"]=""["huawei"]="")
获取数组中的所有元素使用@或*可以获取数组中的所有元素,例如:#!/bin/bashmy_array[0]=Amy_array[1]=Bmy_array[2]=Cmy_array[3]=Decho"数组的元素为:${my_array[*]}"echo"数组的元素为:${my_array[@]}"
Shell函数Shell函数的功能是将一连串的命令打包起来,优点是简化了程序,增加Shell脚本的可移植性,便于维护脚本,还可以用Shell函数的功能自定义一些命令行模式下使用的命令。
定义和调用函数Shell可以用户自定义函数,然后在Shell脚本中可以调用它。在这里没有返回值和参数列表而已,虽然没有参数列表,但是可以传递参数。Shell中函数的定义格式如下:[function]funname[()]{
action;
[returnint;]}
函数参数在Shell中,调用函数时可以向其传递参数。在函数体内部,通过$n的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数...带参数的函数示例:#!/bin/bashfunWithParam(){
echo"第一个参数为$1!"
echo"第二个参数为$2!"
echo"第十个参数为$10!"
echo"第十个参数为${10}!"
echo"第十一个参数为${11}!"
echo"参数总数有$#个!"
echo"作为一个字符串输出所有参数$*!"}
处理参数的特殊字符参数处理说明$#传递到脚本或函数的参数个数$*以一个单字符串显示所有向脚本传递的参数$$脚本运行的当前进程ID号$!后台运行的最后一个进程的ID号$@与$*相同,但是使用时加引号,并在引号中返回每个参数。$-显示Shell使用的当前选项,与set命令功能相同。$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
Shell输入/输出重定向大多数UNIX系统命令从你的终端接受输入并将所产生的输出发送回到您的终端。一个命令通常从一个叫标准输入的地方读取输入。一个命令通常将其输出写入到标准输出。
重定向命令命令说明command>file将输出重定向到file。command<file将输入重定向到file。command>>file将输出以追加的方式重定向到file。n>file将文件描述符为n的文件重定向到file。n>>file将文件描述符为n的文件以追加的方式重定向到file。n>&m将输出文件m和n合并。n<&m将输入文件m和n合并。<<tag将开始标记tag和结束标记tag之间的内容作为输入。
输出重定向重定向一般通过在命令间插入特定的符号来实现。语法如下所示:command1>file1上面这个命令执行command1然后将输出的内容存入file1。注意:任何file1内的已经存在的内容将被新内容替代。如果要将新内容添加在文件末尾,请使用>>操作符。
输入重定向和输出重定向一样,Unix命令也可以从文件获取输入,语法为:command1<file1这样,本来需要从键盘获取输入的命令会转移到文件读取内容。注意:输出重定向是大于号(>),输入重定向是小于号(<)。
重定向深入讲解一般情况下,每个Unix/Linux命令运行时都会打开三个文件:标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。标准输出文件(stdout):stdout的文件描述符为1,Unix程序默认向stdout输出数据。标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。默认情况下,command>file将stdout重定向到file,command<file将stdin重定向到file。
HereDocumentHereDocument是Shell中的一种特殊的重定向方式,用来将输入重定向到一个交互式Shell脚本或程序。它的基本的形式如下:command<<delimiterdocumentdelimiter它的作用是将两个delimiter之间的内容(document)作为输入传递给command。注意:开始的delimiter前后的空格会被忽略掉。结尾的delimiter一定要顶格写,前面不能有任何字符,后面也不能有任何字符,包括空格和tab缩进。
/dev/null文件如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到/dev/null:command>/dev/null/dev/null是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读不到。但是/dev/null文件非常有用,将命令的输出重定向到它,会起到"禁止输出"的效果。
Shelltest命令Shell中的test命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
数值测试参数说明-eq等于则为真-ne不等于则为真-gt大于则为真-ge大于等于则为真-lt小于则为真-le小于等于则为真
字符串测试参数说明=等于则为真!=不相等则为真-z字符串字符串的长度为零则为真-n字符串字符串的长度不为零则为真
文件测试参数说明-e文件名如果文件存在则为真-r文件名如果文件存在且可读则为真-w文件名如果文件存在且可写则为真-x文件名如果文件存在且可执行则为真-s文件名如果文件存在且至少有一个字符则为真-d文件名如果文件存在且为目录则为真-f文件名如果文件存在且为普通文件则为真-c文件名如果文件存在且为字符型特殊文件则为真-b文件名如果文件存在且为块特殊文件则为真文件名1-nt文件名2判断文件名1是否比文件名2新文件名1-ef文件名2判断文件名1与文件名2是否为同一个文件,主要用于hardlink文件名1-lt文件名2判断文件名1小于等于n2则为真-o任何一个条件成立!类似||(或)-a两个条件同时成立!类似&&(与)-z字符串判断字符串是否为空,若字符串为空则为真!反向状态,如test!-xfile,当file不具有-x时则为真
Shell判断符[]判断符[]的功能主要是用来进行数据的判断和字符串的判别。在Shellscript中,具有判断功能的命令不仅仅只有test命令,还有中括号[],用法与test一模一样,只是需要注意以下几点:(1)在中括号[]内的每个组件都需要有空格键来分隔。
(2)在中括号[]内的变量,最好都以双引号括号起来。
(3)在中括号[]内的常量,最好都以单或双引号括号起来,否则会出现参数太多的错误。原因是翻译过来就是这样的,[helloworld==“hello”],中括号[]判定式只能有两个参数,所以发生错误了。正确的写法应该是:[“$name”==“hello”](4)test和[]中,==和!=只能用于比较字符串,而且结果为真时,返回1,结果为假时,返回0。
判断符[]一些常用的选项命令选项说明[-z"$HOME"]判断HOME变量是否为空["$HOME"=="$var"]判断两个变量是否相等["$HOME"=="string"]判断变量的内容是否为string
Shellscript的追踪与调试sh命令或bash命令是Shell命令语言解释器,执行命令从标准输入读取或从一个文件中读取。通过用户输入命令,和内核进行沟通,可以用来追踪和调试Shell脚本,根据sh命令的选项可以追踪和调试程序。bash是自由软件基金会开发的一个Shell,它是Linux系统中一个默认的Shell。Bash不但与BourneShell兼容,还继承了CShell、KornShell等优点。
常用的bash命令和sh命令选项sh[选项]文件名-n:不要执行脚本,仅查询语法的问题-v:在执行脚本前,先将脚本的内容打印到屏幕上-x:将使用到脚本打印到屏幕上。-c:命令从-c后的字符串读取-i:实现脚本交互
bash[选项]文件名-n为不执行script,仅查询语法的问题;-x为将使用到的script执行过程内容显示到屏幕上
Shell文件包含和其他语言一样,Shell也可以包含外部脚本。这样可以很方便的封装一些公用的代码作为一个独立的文件。Shell文件包含的语法格式如下:.filename#注意点号(.)和文件名中间有一空格或sourcefilename
Shellscript实例交互式脚本:变量内容由用户决定题目:请你以read命令的用途,编写一个script,它可以让用户输入firstname与lastname,最后并且在屏幕上显示“Yourfullnameis:”的内容。
#!/bin/bashread-p"Pleaseinputyourfirstname:"firstnameread-p"Pleaseinputyourlastname:"lastnameecho"Yourfullnameis:$firstname$lastname"exit0
Shellscript实例用日期命名文件:利用日期进行文件的创建题目:我希望将每天的数据备份在不同的文件里,所以就需要以每天的日期作为文件名。关键是日期怎么来!假设我要创建3个空的文件,文件名最开头由用户决定(我们假设是filename),那今天的日期是2017/9/30,我想以前天、昨天、今天的日期来创建这些文件,即filename20170928,filename20170929,dilename20170930,该如何是好?
#!bin/bashecho"Iwilluse'touch'tocreatethreefiles."read-p"Pleaseinputyourfilename:"fileuser#开始判断是否存在配置文件名,防止用户随意按[Enter],默认开头为filenamefilename=${fileuser:-"filename"}date1=$(date--date='2daysago'+%Y%m%d)#两天前的日期date2=$(date--date='1daysago'+%Y%m%d)date3=$(date+%Y%m%d)#当天的日期file1=${filename}${date1}#追加的方式配置文件名file2=${filename}${date2}file3=${filename}${date3}touch"$file1"#防止有空格touch"$file2"touch"$file3"exit0
修改SSH登录信息希望每次SSH登录到树莓派时,能够出现一些欢迎信息和可以显示系统状态的信息,包括CPU温度与用量,内存和硬盘占有率信息等。一般情况下,设置树莓派登录欢迎信息的文件有两处:1.位于/etc/update-motd.d/目录下的Shell脚本2.上述脚本执行完毕后打印/etc/motd文本
我们使用nano编辑器新建登录后欢迎信息的脚本:sudonano/etc/updat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 珍珠岩保温板施工方案
- 挑脚手架施工方案
- 氟碳油漆施工方案
- 紫藤架修复施工方案
- 2025年度智能工厂用工承包协议书
- 二零二五年度医院员工食堂运营管理协议
- 2025年度终止运输合同书面通知样本
- 2025年度物流运输企业司机派遣合同模版
- 2025年餐饮行业临时工福利待遇保障协议
- 2025年度智慧停车场委托管理及运营服务协议书
- 部编版小学道德与法治五年级下册《不甘屈辱-奋勇抗争》第一课时课件
- 《赢利》精读图解
- 读书分享读书交流会《你当像鸟飞往你的山》课件
- 大学生职业素养训练(第六版)教案 第二单元 学习职业礼仪
- 2022年中华护理学会输液连接装置安全管理专家共识解读
- 内镜下ESD护理配合
- DB34∕T 1644-2012 南方红豆杉用材林栽培技术规程
- 《中华人民共和国道路运输条例》知识专题培训
- 直肠癌课件完整版本
- 2024年山东省青岛市普通高中自主招生物理试卷(含解析)
- GB/T 2423.65-2024环境试验第2部分:试验方法试验:盐雾/温度/湿度/太阳辐射综合
评论
0/150
提交评论