马兰士sr4400评测(高品质客厅影院也能如此简单时尚)
马兰士sr4400评测(高品质客厅影院也能如此简单时尚) 顾名思义,客厅影院就是利用客厅空间搭建的一套家庭影院娱乐系统。相比专业的独立影音室而言,客厅影院因为配置简单,整体...
linux中shell编程实例(Linux基础-shell编程)
shell 编程一、变量1. shell脚本基础知识
编译型语言:如 c语言 解释型语言:shell 脚本
shell脚本的本质:shell命令的有序集合。
2.shell 编程的基本过程
基本过程分为三步:
建立shell文件:包含任意多行操作系统命令或shell命令的文本文件。——xx.sh赋予shell文件执行权限,==用chmod命令修改权限==。执行shell文件,直接在命令行上调用shell程序
示例:
建立shell文件 prog1.sh
data
赋予shell文件执行权限 (初始文本文件无执行权限)
chmod 740 prog1.sh #或者 chmod u x prog1.sh
执行shell文件
prog1.sh #结果为 prog1.sh :not found
原因是:shell在标准搜索路径中找不到prog1.sh 4.正确的执行shell文件
./prog1.sh #结果为 2009年 12月 16日 星期二 14:52:57 CST
3. shell变量
shell允许用户建立变量存储数据,但不支持数据类型(整型,字符,浮点型),将任何赋给变量的值都解释为一串字符 Variable = value
count = 1echo $ countDATE = dataecho $ DATE
在这里插入图片描述
==注意几点:==
变量没有类型
=号两边不能加空格
变量必须是大写
赋值的时候要用``框起来
Bourne shell有如下四种变量:
用户自定义变量: 在shell编程中通常使用全大写变量:COUNT=1变量的调用,在变量前加$:echo $HOMELinux shell / bash 从右向左赋值:Y=y、X=$Y、echo $X 、y使用unset命令删除变量的赋值:Z=hello、echo $Z、hello、unset Z、echo$Z位置变量及命令行参数: $0 与键入的命令行一样,包含脚本文件名$1,$2....$9 分别包含第一个到第九个命令行参数。$# 包含命令行参数的个数$@ 包含所有命令行参数: $1,$2,...$9$? 包含前一个命令的退出状态$* 包含所有命令行参数:$1,$2,....$9$$ 包含正在执行进程的ID号
预定义变量
必须在两位数边写上 { } ,才能正常值一一样。
环境变量 HOME:/etc/passwd文件中列出的用户目录IFS: Internal Field Separator , 默认为空格,tab及换行符PATH:shell搜索路径PS1,PS2:默认提示符($)及换行提示符(>)TERM:终端类型,常用的有vt100,ansi,vt200,xterm等。二、shell 功能语句
shell 程序由零或多条shell语句构成。shell语句包括三类:说明性语句,功能性语句和结构性语句。
**说明性语句 ** 以 # 号开始到该行结束,不被解释执行 功能性语句 任意的shell命令,用户程序或其他shell程序 结构性语句 条件测试语句,多路分支语句,循环语句,循环控制语句等。
#!/bin/sh # # 本程序说明 # command_1 command_2 #command_2的语句说明 ....
常用功能性语句(命令)
==read== 从标准输入读入一行,并赋值给后面的变量,其语法为:
read var
把读入的数据全部赋给var
read var1 var2 var3
把读入行中的第一个单词(word)赋给var1 ,第二个单词赋给var2,.....把其余所有的词赋给最后一个变量。 如果执行read语句时标准输入无数据,则程序在此停留等候,直到数据的到来或被终止运行。
#!/bin/bash echo "input a number:" read NUM echo $NUM
在这里插入图片描述
#!/bin/bashecho "input year month day:"read Y M Decho "Today is $Y-$M-$D"
==expr命令:== 算术运算命令expr主要用于进行简单的整数运算,包括加( )、减(-)、乘(*)和求模(%)等操作。例如
$expr 12 5 \* 327$expr 3 - 8 / 2-1$num=9$sum=`expr $num \* 6`$echo $sum54
!!运算符间用空格分开!!
测试语句
==test语句==
test语句可测试三种对象:
字符串 / 整数 / 文件属性
每种测试对象都有若干测试操作符 例如:
test "$answer" = "yes" #变量answer的值是否为字符串yes test $num -eq 18 #变量num的值是否为整数18 test -d tmp #测试tmp 是否为一个目录名
字符串测试:
s1 = s2 测试两个字符串的内容是否完全一样 s1 != s2 测试两个字符串的内容是否有差异 -z s1 测试s1 字符串的长度是否为0 -n s1 测试s1 字符串的长度是否不为0
整数测试:
a - eq b 测试a 与 b是否相等 a - ne b 测试a 与 b是否不相等 a - gt b 测试a 是否大于b a - ge b 测试a 是否大于相等b a - lt b 测试a 是否小于b a - le b 测试a 是否小于等于b
#!/bin/bash A="how" B="hoW" test $A = $B echo $? //表示输出前一个语句的结果
在这里插入图片描述
#!/bin/bashA="how"B="how"test $A = $Becho $? //表示输出前一个语句的结果
相等为0(真),不等为1(假)
#!/bin/bashA="how"B="hoW"test $A = $Becho $? //表示输出前一个语句的结果pwdecho $?ls fileecho $?
最后ls file 没有,所以结果为2
#!/bin/bashA=99B=88test $A -ne $Becho $? //表示输出前一个语句的结果test $A -gt $Becho $? //表示输出前一个语句的结果
在这里插入图片描述
三、shell 分支语句1. 条件语句
==if ..then...fi== 语法结构:
if 表达式 then 命令表 fi
如果表达式为真,则执行命令表种的命令;否则退出if语句,即执行fi后面的语句if和fi是条件语句的语句括号,必须成对使用;命令表中的命令可以是一条,也可以是若干条。
#!/bin/bash if [ $# -ne 1 ] then echo "usage : $0 filename" exit fi if ! [ -e $1 ] then echo " $1 not exist" exit fi if [ -d $1 ] then echo "$1 is a dirextory" fi
if...then ..else..fi 语句结构为:
if 表达式 then 命令表1 else 命令表2 fi
如果表达式为真,则执行命令表1中的命令,在退出if语句;否则执行命令表2中的语句,在退出if语句。
注意:无论表达式是否为真,都有语句要执行
#!/bin/bash if [ $# -ne 1 ] then echo "usage : $0 filename" exit fi if ! [ -e $1 ] then echo " $1 not exist" exit fi if [ -L $1 ] then echo "l" elif [ -d $1 ] then echo "-" elif [ -b $1 ] then echo "b" else echo "csp" fi
在这里插入图片描述
2. 多路分支语句
==case...esac== 多路分支语句case用于多重条件测试,语法结构清晰自然,
case 字符串变量 in //case语句只能检测字符串变量 模式1) 命令表1 //各模拟中可用文件名元字符,以右括号结束 ;; 模式2 | 模式3) 命令表2 ;; //命令表以单独的双分号行结束,退出case语句 ..... 模式n) 命令表n ;; //模式n常写为字符*,表示所有其他模式 esac //最后一个双分号行可以省略
判断选择——多路分支语句 示例1:
#!/bin/bash echo -n "please choose (yes | no)?" read R case $R in yes | Yes |y | Y |YES ) echo "yes" ;; no) echo "no" ;; *) echo "wrong" #;; esac
判断成绩——多路分支语句 示例2:
#!/bin/bashecho -n "please choose (yes | no)?"read Sif [ $S -lt 0 -o $S -gt 100]then echo "no in [0-100]"exit fiG=`expr $S / 10`case $G in9|10)echo "$S A";; 6|7|8)echo "$S B";;*)echo "$S C"#;;esac
在这里插入图片描述
四、shell 循环语句1. 循环语句for的用法
当循环次数已经知道或确定时候,使用for循环语句来多次执行一条或者一组命令,循环体由语句括号do和done来限定。
格式为:
for 变量名 in 单词表 do 命令表 done
变量依次取单词表中的各个单词,每取一次单词,就执行一次循环体中的命令。循环次数由单词数确定。命令表中的命令可以是一条,也可以是由分号或换行符分开的多条。 如果单词表是命令行上的所有位置参数时,可以在for
实例代码:
#!/bin/bash #for I in `ls /etc` do echo "$I" done
在这里插入图片描述
==seq命令== :列出一系列的数字 seq 起始数字 中间分量 终止分量
#!/bin/bash for I in `seq 1 2 10` do echo "$I" done
示例:拷贝当前目录下的所有文件到backup子目录下。 使用语法为:./prog5.sh[filename]
#The statement of for ....do...done if [! -d $HOME/backup ] then mkdir $HOME/backup fi flist=`ls` for file in $flist //flist的值是ls的执行结果即当前目录下的文件名 do if [ $# = 1 ] then if [ $1 = $file ] //命令行上有一个参数时 then echo "$file found" ; exit fi else cp $file $HOME/backup echo "$file copied" fi done echo ***Backup Completed******
2. 循环语句while的用法
语法结构:
while 命令或表达式 do 命令表 done
while语句首先测试其后的命令或表达式的值,如果为真,就执行一次循环体中的命令,然后再测试该命令或表达式的值,执行循环体,直到该命令或表达式为假时退出循环。
示例:
#!/bin/bash I=0 while [ $I -lt 5 ] //-lt = < do I=`expr $I 1` echo -n "input score:" read $S case `expr $S / 10` in 9|10) echo "A" ;; 6|7|8) echo "B" ;; *) echo "C" ;; esac echo "$I" done
3. 循环控制语句
==break 和 continue==
break n 则跳出n层; continue语句则马上转到最近的一层循环语句的下一轮循环上, continue n 则转到最近n层循环语句的下一轮循环上。
用法:prog7 整数 整数 整数 ... 参数个数不确定,范围为1-10个 ,每个参数都是正整数。
示例:
#!/bin/bash if [ $# -ne 5 ] then echo "argument 5" exit fi for I do if [ `expr $I % 2` -eq 1 ] then echo "$I" else break fi done
若是break 的话 ,跳出整个循环。遇到偶数就跳出循环。
#!/bin/bashif [ $# -ne 5 ]then echo "argument 5"exitfifor Idoif [ `expr $I % 2` -eq 1 ]thenecho "$I"elsecontinuefidone
若是continue的话 ,跳出当前循环。遇到偶数就跳出当前循环,继续执行下面语句
五、shell 函数1. shell函数调用
函数调用格式:
方式1: value_name=`function_name [arg1 arg2 ...]`
函数的所有标准输出都传递给了主程序的变量
方式2: function_name [arg1 arg2 ...] echo $?
获取函数的返回状态
获取函数的返回状态 ——示例:
grep_user() { R=`grep "$1" /etc/passwd | wc -l` echo $R return $R } echo -n "input username:" read USER grep_user $USER RET=$? if [ $USER -eq 1 ] then echo "$USER exist" else echo "$USER not exist" fi
若改为不返回值,用变量,函数的所有标准输出都传递给了主程序的变量
grep_user(){R=`grep "$1" /etc/passwd | wc -l`echo $R}echo -n "input username:"read USERRET=`grep_user $USER`echo "----return $RET-----"if [ $USER -eq 1 ]then echo "$USER exist"elseecho "$USER not exist"fi
在这里插入图片描述
2. 函数变量作用域全局作用域:在脚本的其他任何地方都能够访问该变量局部作用域:只能在声明变量的作用域内访问声明局部变量的格式: c Local variable_name = value
grep_user() { B=200 A=100 } grep_user echo "end: $A-$B"
结果发现函数内的变量,竟然是全局变量
如果我们要局部变量就 加一个local
grep_user() { B=200 local A=100 } grep_user echo "end: $A-$B"
在这里插入图片描述
,
马兰士sr4400评测(高品质客厅影院也能如此简单时尚) 顾名思义,客厅影院就是利用客厅空间搭建的一套家庭影院娱乐系统。相比专业的独立影音室而言,客厅影院因为配置简单,整体...
47岁的闫妮素颜判若两人(闫妮现在的腿比倪妮还细白直) 羊看了最新一期的《快乐大本营》,扔掉了没吃完的炸鸡腿儿,在跑步机上完成了这篇文章。 你问羊看到了什么?拿好你的速...
白鹿原白嘉轩虽未娶妻成功(再读白鹿原才懂) “小人才欺侮女人”。 一伙劫匪冲入白家抢劫,碰了白嘉轩软硬不吃的钉子。土匪用刀划开了仙草的裤子,被绑着的白嘉轩,愤怒地喊...
r语言入门操作(R语言入门的基本操作) 大家好,这是从知乎《一个大学生的日常笔记》中迁移过来的R语言教程的第一篇。 这一份笔记follow了两本非常优秀的R语言教材,分别是Robert...
27岁歌星谢津(才女谢津19岁比肩毛阿敏) “ 蓝脸的窦尔敦,盗御马,红脸的关公,战长沙 ,黄脸的典韦,白脸的曹操,黑脸的张飞,叫喳喳……” 这首所有人都能唱上两句的《说唱...
80年代变形金刚主题歌(这支不知名的摇滚乐队) 可能很多人听见“梦龙”俩字只能想到八块钱一根儿广告做的跟Gucci似的那个巨好吃的冰棍儿。 但是在当今的摇滚界,也有这么一个梦...
当各大男神剃了光头你觉得谁最帅(全世界都在等这位光头男神回来耍帅) 周六一大早,飘飘就被小姐妹的电话吵醒。 刚想断绝姐妹情谊,就被她一句话勾起了兴趣: 快起床!我带你...
40岁的安妮海瑟薇身高(海瑟薇健身照曝光) 啊,国产剧这么不争气吗? 《玫瑰之战》借鉴美剧《傲骨贤妻》没多久。 刚过审的《我的助理六十岁》剧情又被吐槽搭的是安妮·海瑟薇的...
最新枭龙型号(双座枭龙蛟龙-600) 最近两个月间,中国航空届新闻不断。枭龙双座机首飞,国产大飞机C919首飞,直19E武装直升机首飞,水陆两用飞机蛟龙600首次滑行。一条条喜讯让军...
喷雾干燥塔工作原理(非常全的喷雾干燥塔的知识) 喷雾干燥塔是一种可以同时完成干燥和造粒的装置,是在生物农药、医药、食品微生物等领域很常见的一种设备今天为大家详细介绍...
八达岭老虎伤人事件争议焦点(轰动一时的八达岭老虎咬人案) 随着科技文明的发展,生活在城市中的人类,距离大自然文明越来越远。在这种背景下,世界各地的动物园迎来越来越多...
三国曹操攻打荆州(三国战争曹操收割麦子) 蒿里行 曹 操 关东有义士,兴兵讨群凶。 初期会盟津,乃心在咸阳。 军合力不齐,踌躇而雁行。 势利使人争,嗣还自相戕。 淮南弟称号...
舟山普陀寺简介(传说中观音菩萨的道场普陀山) 观世音菩萨(梵文:,Avalokiteśvara),观世音来自于竺法护与其弟子译于长安敦煌寺的 《正法华经》。竺法护初译“光世音” 其弟子...
中戏北影高颜值新生(谁说明星无学霸) 今天是2022年 #高考# 第一天 ,写一篇喜庆洋洋的艺考状元盘点文,散播点好运,祝福所有高考生都可以超水平发挥,“考的都会,蒙得都对”!...
唐朝李后主和赵匡胤(第一个跳出来反对赵匡胤的节度使) 前言 赵匡胤陈桥兵变,建立大宋王朝后,由于政权的来路不正,赵匡胤怀柔一切可以怀柔的力量,笼络人心,以保证大宋王...
刘涛王珂离婚是真的吗,刘涛发长文谈婚变 刘涛又被传离婚了。 3月17日。 有媒体曝出猛料,称刘涛王珂离婚,将在近期官宣。 离婚原因是: 王珂出轨且有私生子。 报道一出,轰炸全...
不再担心如何写800字作文(不再担心800字作文叙述) 1.作文。 袁隆平说:人就像一粒种子。 请以做一粒___________的种子为题,写一篇不少于600字的文章。 要求:(1)将题目补充完整。(...
中职学校班主任工作计划,2022中职院校班主任学期计划 教师三年发展规划班主任工作计划1 一、工作目标 1、班级人人有事做,事事有人做,时时有事做。 2、及时检查反馈,形成良好的班...
传统节日的风俗及寓意,中国传统节日象征意义简短 篇一:潍坊的春节 山东潍坊潍城区望留小学 刘思彤 我们祖国地大物博,民族众多,在春节各个地方有各个地方的特色,在我的印象...
关于教师的名言有什么(有关教师的名言名句欣赏) 中外教育家名言集锦 教书育人篇 1.师也者,教之以事而喻诸德也。——《礼记》 2.先生不应该专教书,他的责任是教人做人;学生不应...
力行近乎仁意思(力行近仁道不远人的意思) 四书五经是举世闻名的东方圣经,光照千秋的文化瑰宝。 四书五经:四书、五经的合称,泛指儒家经典著作。 四书指的是《大学》《中庸...
冬至佳句简短10字,描写冬至的优美句子 时光飞逝 转眼间马上到了阴极之至,阳气始生的一天 冬 至 日短之极,阴极之至, 阳气始生,行于天地。 一线已添,九九待记。 煮雪烹茶,还...
光大证券闫峻怎么了?辞任董事长原因引关注 文|财新周刊 王娟娟 刘冉 不到十年间两次爆发重大经营风险,一把手前赴后继,在重大项目决策、选人用人和自身廉洁等方面屡屡失足...
外国文学作品有哪些,外国文学书籍推荐 澎湃新闻记者 罗昕 2022年到了。 新的一年里,不少文学好书将与读者见面。在外国文学领域,国内读者可以看到2021诺贝尔文学奖得主阿卜杜勒...