linux编写shell脚本程序(linux脚本编写教程)
linux编写shell脚本程序(linux脚本编写教程)
2024-11-06 08:21:39  作者:累累累累  网址:https://m.xinb2b.cn/life/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-06不欲与俗人齿一早在微信上看到朋友发来的一个链接,是关于一位名家纪念馆挂牌的消息,并附言:很痛心我回信调侃:为什么?嫉妒?朋友答:我没有想到他也会这么俗!朋友不是嫉妒的人,平日也颇有容人之量,这次我能感觉出来,他是。
  • 小米10的详细参数性能配置(小米10的基本参数)
  • 2024-11-06小米10的基本参数由于本次疫情影响,小米的手机发布会也改为网上直播发布,定于2月13日雷老板也要发布自己的小米10手机了首先,不说手机怎么样希望本次的疫情能够尽快结束,医护人员及奋斗在一线的工作人员都平平安安武汉加油!。
  • 哈密周边(在哈密这个地方)
  • 2024-11-06在哈密这个地方在303省道距哈密市区30多公里处有一条长约1000米的“怪坡”汽车上坡,在不给油空挡的情况下车将向坡顶滑行从坡底的零速度到坡顶时时速可达40公里哈密“怪坡”是在十年前偶然中发现的如果往地上倒矿泉水水。
  • 广西山区县有哪些(从山区县到)
  • 2024-11-06从山区县到新华社北京12月9日电(记者毛娜)福建省闽清县积极探索乡村振兴新路径近日,福建省公布了该省2019年度县域经济实力“十强”、经济发展“十佳”县(市)评价结果,闽清县位列全省县域经济发展“十佳”县(市)。
  • 师妹被劫持小说(小说江上遇险被救上花船)
  • 2024-11-06小说江上遇险被救上花船文一几人虽个个容貌英挺,身材各有千秋,但在文璟面前却还是不够看的,风月场所出来的女子眼力多毒辣,只消一眼便可看出谁才是人中龙凤眼下处境再困顿又如何?以文璟那姿容风流,便是倒贴恐怕也得争个你死我活,而那。
  • 越叫越有福气的女孩名字(关于越叫越有福气的女孩名字)
  • 2024-11-06关于越叫越有福气的女孩名字春艺、清迎、紫桑、茜念、佳芸翠瑛、语蔚、书霎、姗丝、巧颖岚以、楠芬、茵媛、燕秀、盈曦霏蕊、兰茵、茵惠、缦冰、君琪安云、巧真、芍君、筠雨、睿甜雨瑗、霄念、兰婉、茹红、霜清虹娴、泽紫、凌曦、裳舒、灵菲娟馨。
  • 华尔街之狼铺满钞票(财富鉴赏华尔街之狼)
  • 2024-11-06财富鉴赏华尔街之狼华尔街之狼TheWolfofWallStreet基本信息导演编剧马丁·斯科塞斯特伦斯·温特上映时间2013年简介在危机四伏的投资界,掌管史崔顿·奥克蒙公司的乔丹·贝尔福特(莱昂纳多·迪卡普里奥饰)生活。
  • 潮州室外文旅游乐标准(潮州饶平县唯一少数民族村寨)
  • 2024-11-06潮州饶平县唯一少数民族村寨2月23日,潮州市饶平县饶洋镇,蓝屋畲族村的村民们身穿畲族服饰,在土楼——泰华楼内举行民俗游龙活动,村民舞起红、黄、绿等各色龙在围屋内外祈福闹新春,演绎别具风格的“民族风”蓝屋畲族村位于饶洋镇东南部,。
  • ems运费是怎么算的
  • 2024-11-06ems运费是怎么算的EMS的运费是由寄件的重量、运送速度、运送地区和各种手续费等综合决定的一、重量起重500克及以内:20元,续重每500克或其零数:一区4元;二区6元;三区9元;四区10元;五区17元二、次晨达资费标准。
  • 煮熟的鸡蛋有黑色斑点能吃吗(鸡蛋有黑色斑点能吃吗)
  • 2024-11-06鸡蛋有黑色斑点能吃吗若鸡蛋里面只有一个黑色斑点那就可以食用,因为这种鸡蛋往往都是已经受精的鸡蛋,内部有黑色斑点很正常但若这个鸡蛋内部有很多黑色斑点的话,那就说明这鸡蛋出现了变质的现象,需要尽快丢弃鸡蛋是我们家中非常常见的。
  • 断言英语单词怎么写(断言英语是废物技能)
  • 2024-11-06断言英语是废物技能​你大概没见过用英语之外的语言敲代码的程序员吧?全文1789字,阅读约需3.5分钟如果,你每天大清早6点准时起床,抄起一块面包就跑到校园操场上背考研英语单词;如果,你计划出国,每周都在网上苦苦寻觅一个。
  • 叶问4十周年纪念版电影(叶问4八佰等华语片登戛纳电影节场刊)
  • 2024-11-06叶问4八佰等华语片登戛纳电影节场刊眼下正在举办的72届戛纳电影节上,不少华语片登上了戛纳电影节的场刊,其中就包括甄子丹主演的《叶问4》其实早在2017年3月的香港国际影展上,就公布了《叶问4》的海报,编剧黄百鸣还透露要集合原班人马:甄。