linux编写shell脚本程序(linux脚本编写教程)
linux编写shell脚本程序(linux脚本编写教程)
2024-11-22 04:43:55  作者:累累累累  网址:https://m.xinb2b.cn/know/epg315466.html
目录

Shell

Shell脚本的执行

Shell脚本编写规范

Shell 中的变量

变量的算术运算

双小括号 (()) 数值运算命令的用法

let 运算命令的用法

expr 命令的用法

br 命令的用法

$[] 符号的运算示例

Shell脚本的条件测试

几种条件测试语句

文件测试操作符

字符串测试操作符

整数二元比较操作符

逻辑操作符

测试表达式 test 、[] 、[[]] 、 (()) 的区别

if 条件判断语句

case 条件判断语句

for循环语句

while循环语句

Break、Continue、exit 循环控制语句

Shell脚本执行scrapy爬虫和python脚本

Shell

Shell是一个命令解释器,它的作用是解释执行用户输入的命令及程序等。 用户每输入一条命令,Shell就执行一条。这种从键盘输入命令,就可以立即得到回应的对话方式,称为交互的方式。

当命令或程序语句不在命令行下执行,而是通过一个程序文件来执行时,该程序文件就被称为Shell脚本。 在Shell脚本里内置了很多命令、语句及循环控制,然后将这些命令一次性执行完毕,这种通过文件执行脚本的方式称为非交互的方式。 Shell脚本语言很适合用于处理纯文本型的数据,而Linux系统中几乎所有的配置文件、日志文件,以及绝大对数的启动文件都是纯文本类型的文件。

实验一

利用case语句编写脚本,满足下列要求

1.执行create时根据userfile和passfile建立用户

2.执行delete时根据userfile删除用户

1.编写脚本:

[root@localhost mnt]# vim user_ctrl.sh

#!/bin/bash

read -p “Please input the operation (create or delete ): ” OPERATION

//输入你要执行的动作

case $OPERATION in

create) //第一种情况:create

read -p “Please input the userfile : ” USERFILE //提示输入文件

[ -e $USERFILE ] || { //判断是否存在

echo “$USERFILE is not exist “

exit 1

}

read -p “Please input the passwdfile : ” PASSFILE

[ -e $PASSFILE ] || {

echo “$PASSFILE is not exist “

exit 1

}

USERLINE=`awk ‘BEGIN{N=0}{N++}END{print N}’ $USERFILE` //计算userfile文件行数

for LINE_NUM in `seq 1 $USERLINE` //利用循环建立

do

USERNAME=`sed -n “${LINE_NUM}p” $USERFILE` //截取userfile文件第一行内容

PASSWORD=`sed -n “${LINE_NUM}p” $PASSFILE` //截取passfile文件第一行内容

useradd $USERNAME //建立用户

echo $PASSWORD | passwd –stdin $USERNAME

done

;;

delete) //第二种情况:delete

read -p “Please input the userfile : ” USERFILE

[ -e $USERFILE ] || {

echo “$USERFILE is not exist “

exit 1

}

USERLINE=`awk ‘BEGIN{N=0}{N++}END{print N}’ $USERFILE`

for LINE_NUM in `seq 1 $USERLINE`

do

USERNAME=`sed -n “${LINE_NUM}p” $USERFILE`

userdel -r $USERNAME

done

;;

*) //第三种情况:其余各种情况

echo Eorror!

;;

esac


2.执行:

[root@localhost mnt]# cat userfile

user1

user2

user3

[root@localhost mnt]# cat passfile

123

456

789

[root@localhost mnt]# sh user_ctrl.sh user

Please input the operation (create or delete ): hello //输入错误动作

Eorror!

[root@localhost mnt]# sh user_ctrl.sh user

Please input the operation (create or delete ): create

Please input the userfile : user //输入错误文件

user is not exist

[root@localhost mnt]# sh user_ctrl.sh user

Please input the operation (create or delete ): create

Please input the userfile : userfile

Please input the passwdfile : passfile //建立用户

Changing password for user user1.

passwd: all authentication tokens updated successfully.

Changing password for user user2.

passwd: all authentication tokens updated successfully.

Changing password for user user3.

passwd: all authentication tokens updated successfully.

[root@localhost mnt]# sh user_ctrl.sh user

Please input the operation (create or delete ): delete //删除用户

Please input the userfile : userfile

[root@localhost mnt]# id user1

id: user1: no such user



实验二

循环

循环执行介绍

将某代码段重复运行多次,通常有进入循环的条件和退出循环的条件

重复运行次数

循环次数事先已知循环次数事先未知

常见的循环的命令:for, while, until


for循环

[root@centos7 ~]#help for

for: for NAME [in WORDS … ] ; do COMMANDS; done

Execute commands for each member in a list.

The `for’ loop executes a sequence of commands for each member in a

list of items. If `in WORDS …;’ is not present, then `in “$@”‘ is

assumed. For each element in WORDS, NAME is set to that element, and

the COMMANDS are executed.

Exit Status:

Returns the status of the last command executed.

for ((: for (( exp1; exp2; exp3 )); do COMMANDS; done

Arithmetic for loop.

Equivalent to

(( EXP1 ))

while (( EXP2 )); do

COMMANDS

(( EXP3 ))

done

EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is

omitted, it behaves as if it evaluates to 1.

Exit Status:

Returns the status of the last command executed.

格式1:

for NAME [in WORDS … ] ; do COMMANDS; done for 变量名 in 列表;do 循环体 done for 变量名 in 列表 do 循环体 done

执行机制:依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束

for循环列表生成方式:

直接给出列表

整数列表:

{start..end}

$(seq [start [step]] end)

返回列表的命令:

$(COMMAND)

使用glob,如:*.sh

变量引用,如:$@每个参数为独立字符串,$#传递给脚本的参数的个数,$*全部参数合为一个字符串

范例:面试题,计算1+2+3+…+100的结果

[root@centos8 ~]#sum=0;for i in {1..100};do let sum+=i;done ;echo sum=$sum

sum=5050

[root@centos8 ~]#seq -s+ 100|bc5050

5050

1

2

3

4

范例:

[root@centos8 ~]#cat /data/scripts/for_sum.sh

#!/bin/bash

sum=0

for i in $* ; do

let sum+=i

done

echo sum=$sum

[root@centos8 ~]#bash /data/scripts/for_sum.sh 1 2 3 4 5 6

sum=21

  • 商业类品牌设计案例(商业零售品牌的视觉创新)
  • 2024-11-22商业零售品牌的视觉创新纵观我国改革开放四十年的消费变迁史,经历了从温饱消费到个性化、品质化消费的转变当下所讲的新消费,其“新”是指随着经济的发展、科技的驱动及社会的变迁,消费人群、产品价值、交易场景发生了新的变化八九十年代。
  • 乡村爱情中的长贵现状(乡村爱情戏中的)
  • 2024-11-22乡村爱情戏中的从2006年开始上映的农村爱情题材电视剧《乡村爱情》从第一部开始到第十三部至今不知不觉已经连续拍了15年了!剧中诙谐幽默的农村生活深受很多观众朋友们的喜欢这15年来,剧中的男男女女从相识相恋到结婚带娃。
  • 兰州至西宁的高铁马上开建了吗(这条高铁正在建)
  • 2024-11-22这条高铁正在建兰广高铁即兰州至广州高速铁路是国家《中长期铁路网规划(2030年)》中的快速铁路客运通道之一是一条西北起兰州(西宁)东南至广州市的西北向东南方向铁路客运干线途经西宁、兰州、成都、贵阳、广州5座省会城市。
  • 串串豆皮怎么做(串串豆皮做法介绍)
  • 2024-11-22串串豆皮做法介绍食材:豆皮218克、桂皮492克、糖18克、黄豆酱油363克、八角861克、花椒278克、蒜152克、耗油193克八角,桂皮,花椒,干辣椒用温水泡十几分钟,豆皮用温水泡几分钟软了就可以豆皮沥干水分,切。
  • 全国青少年游泳成绩(南京初一游泳小将直入省队)
  • 2024-11-22南京初一游泳小将直入省队近日,江苏省第二十届运动会圆满闭幕,南京体育代表团勇夺293.5块金牌,荣获全省第一开学刚上初一的樊羽轩引起了大家的注意,他不但是本届省运会游泳项目的单项夺金王,同时也是南京体育代表团夺金最多的个人选。
  • 阴阳师里的式神是从何而来(玩家都给式神取过哪些特有梗的名字)
  • 2024-11-22玩家都给式神取过哪些特有梗的名字大家好我是阿凉阴阳师的式神名称大多改编于真实的鬼怪,例如云外镜就是日本鬼怪神话里,一面可以看见远方的镜子,有点类似于吉普赛人占卜用的水晶球但是,大家的式神都叫一个名字未免显得太过枯燥了所以,网易给大家。
  • 手机上查驾驶证编号(车主和驾驶人手机号码登记不准确)
  • 2024-11-22车主和驾驶人手机号码登记不准确为了让群众少跑腿,我市交警部门大力开发各种系统应用,方便群众足不出户办理业务,分别开发了便民短信提醒服务、互联网缴纳交通违法罚款服务、微信缴纳交通违法罚款服务,近期又上线了互联网交通安全综合服务平台(。
  • 饭店椒盐蘑菇怎么炸才酥脆(大厨分享饭店炸蘑菇的做法)
  • 2024-11-22大厨分享饭店炸蘑菇的做法大家好,我是第一美食的阿飞,关注阿飞,有更多的家常美食供大家参考今天为大家分享一道蘑菇的新吃法,喜欢吃蘑菇的朋友千万不能错过啊蘑菇是菌菇家族中非常重要的成员之一,蘑菇有除了酸甜苦辣咸以外的第六种味道—。
  • 八月未央小说简介(八月未央小说介绍)
  • 2024-11-22八月未央小说介绍《八月未央》讲述率真叛逆的未央和憧憬婚姻的乔是性格迥异的闺蜜知己,个性的强烈碰撞让单纯暧昧的情感日渐醇厚,而乔的男友朝颜的到来使得三人的情感更加微妙朝颜与乔认识十年,表面上深爱着乔,与乔谈论着结婚的事。
  • 时代少年团进时代峰峻是哪个节目(时代峰峻声明严厉谴责)
  • 2024-11-22时代峰峻声明严厉谴责新京报讯4月14日,时代少年团所属公司时代峰峻发布声明,表示针对近日有人声称进入时代少年团成员住过的酒店房间并进行拍摄一事,已第一时间通过节目组联系酒店方,督促酒店方进行相关调查“我司严厉谴责此等严重。
  • 上海临期商品超市(上海市民能去超市采购)
  • 2024-11-22上海市民能去超市采购4月16日,央视新闻联播中关于“上海坚持动态清零,做好生活物资供应”报道中的画面引发热议,画面显示上海居民走出家门,在超市采购,对此有网友质疑画面的真实性,质疑画面是否是“群演”“摆拍”?4月17日,。
  • 三国杀武将的腹肌(三国杀武将的德语介绍)
  • 2024-11-22三国杀武将的德语介绍今天,我继续给大家用德语介绍三国杀的武将关羽:美髯公(GuanYu:Schönbartfürst)武圣:HeiligerKrieger你可以将一张红色牌当【杀】使用或打出AlledeinerotenK。