当前位置:首页 > 生活百科

linux编写shell脚本程序(linux脚本编写教程)

栏目:生活百科日期:2025-04-10浏览:0

目录

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

“linux编写shell脚本程序(linux脚本编写教程)” 的相关文章

做网站需要什么条件,新手做网站的4个步骤

拥有一个自己的网站是很多互联网爱好者的小梦想!但是如何搭建一个自己的网站呢?建站爱好者今天来给大家捋一捋!第一步:购买域名什么是域名呢?www.toutiao....

产品需求管理工具,需求管理的5个过程

笔者本意是通过总结一些关于产品需求管理的内容文字让自己对此有个完整的认知,以备工作之需;同时需求管理也是从事产品不可回避的核心工作,做好需求管理是一个靠谱产品经...

topview广告是什么意思(解读TopView产品形态)

相信很多朋友这几天刷抖音都能看到下面这个广告吧~有没有觉得很高大上!很夺目!很炫彩!这就是横空出世的全国第一款有声开屏广告——TopView产品介绍用户打开抖音...

git切换分支命令模式(1分钟教你git重新设置用户名密码)

Git常用操作命令收集:1)远程仓库相关命令检出仓库:$gitclonegit://github.com/jquery/jquery.git查看远程仓库:$gi...

哪里看关键词排名(批量查询关键词排名的方法)

很多站长不知道如何查看自己网站关键词排名情况,市面上能看到网站所有关键词排名的免费工具我是没有见到过,毕竟长尾词那么多,也不可能将你所有关键词的排名都统计出来,...

可以赚钱的项目有什么,真实可靠的网络赚钱项目推荐

创业,从来都是很多人理想生活的首选,但是从想法到落实之间,隔着无数有效的行动。在互联网+经济时期,很多信息和渠道都已经接近透明化了,依靠信息不对称盈利的一些行业...

excel存在一个或多个循环引用如何删除(表格兼容模式还

打开表格就提示这个:循环引用警告:一个或多个公式包含循环引用,可能无法正确计算。循环引用是指某个公式内依赖同一公式结果的任何引用。例如,引用其自身值的单元格以及...

官方双十一禁止先提价后打折(促销重磅发声)

每经编辑:李泽东据市场监管总局官网11月6日消息,“双十一”网络集中促销活动在即,市场监管总局向全国互联网平台企业和各地市场监管部门下发《关于规范“双十一”网络...

prd文档用什么工具写(简评这2种工具优缺点)

一直以来,我都习惯在Axure上写需求说明。但是,也有不少公司或者技术习惯使用word文档的PRD。确实,Word文档形式的PRD有其存在的价值,一来方便存档,...

国家统计局直报系统(附中国GDP论点数据分析)

今天(1月19日)上午,国家统计局公布2015年国民经济运行情况。数据显示,2015年我国GDP增长6.9%。在新闻发布会上,中国日报记者向国家统计局局长王保安...