linux编写shell脚本程序(linux脚本编写教程)
linux编写shell脚本程序(linux脚本编写教程)
2024-06-29 03:19:34  作者:累累累累  网址:https://m.xinb2b.cn/tech/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

linux编写shell脚本程序(linux脚本编写教程)(1)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

linux编写shell脚本程序(linux脚本编写教程)(2)linux编写shell脚本程序(linux脚本编写教程)(3)实验二

循环

循环执行介绍

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

重复运行次数

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

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

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

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-06-29彭加木罗布泊失踪谜团彭加木是我国著名的生物化学学家,失踪前任新疆科学院副院长他先后15次到新疆进行科学考察,3次进入巴音郭楞蒙古自治州罗布泊进行探险,1980年6月17日不幸在罗布泊失踪他失踪后,党中央国务院多次派出人员。
  • 秦时明月剧情之典庆回忆杀 秦时明月四大壮汉
  • 2024-06-29秦时明月剧情之典庆回忆杀 秦时明月四大壮汉中二动漫酱1.典庆披甲门战斗机器人农家六堂高手之一,隶属于朱家的神农堂原是魏都大梁披甲门的嫡系传人,是梅三娘的师兄身材异常高大魁梧,可将肉身练作盾甲,刀枪不入,一身横练硬功,曾在战场上连挡13辆战车正。
  • 羊肚菌人工种植和野生的区别(珍稀食用菌羊肚菌)
  • 2024-06-29珍稀食用菌羊肚菌羊肚菌是一种珍稀食用菌品种,因为菌盖表面凹凸不平、状如羊肚而得名又叫羊肚菜、羊蘑、羊肚蘑春末至秋初,羊肚菌生长在针叶阔叶林混交林中,分布在陕西、甘肃、青海、西藏、新疆、四川、山西、吉林、江苏、云南、河。
  • 初四拜年祝福语(初四拜年祝福语都有什么)
  • 2024-06-29初四拜年祝福语都有什么早上好,亲爱的朋友今天是大年初四,拜个年,问声好福禄寿喜来拜访,其乐融融喜团圆今天收到这份祝福的人,注定2019年一整年里,福星高照,万事顺心正月初四迎喜神,喜神下凡你家门,快乐与你不离分,喜事伴你乐。
  • 郑愁予诗歌有哪些
  • 2024-06-29郑愁予诗歌有哪些《梦土上》《衣钵》《窗外的女奴》《郑愁予诗选集》《郑愁予诗集Ⅰ》《燕人行》《雪的可能》《莳花刹那》《刺绣的歌谣》《寂寞的人坐着看花》《雨说》,成名作《错误》等.。
  • 截拳道入门基本功练习(截拳道功法详实科学)
  • 2024-06-29截拳道功法详实科学一、日常练功法截拳道是一种实战性强且极具威力的实战搏击术自创立以来,败倒在李小龙重拳铁腿之下的功夫高手难以计数,他以无数无可争议的事实确立了在世界搏坛的地位这一切与其独特的练功方法关系极大(一)跑步李。
  • 09途锐怎么连接蓝牙(下面5个步骤教你解决)
  • 2024-06-29下面5个步骤教你解决把手机蓝牙和车载蓝牙都打开,且处于可发现状态在手机的蓝牙界面,点击“搜索设备”手机可搜索到车载蓝牙选中手机中显示的车载蓝牙,点击车载蓝牙设置进行配对如果配对码输入正确,稍候即可在车载蓝牙上显示“已连接。
  • 如何寄快递最快到达(如何批量寄快递)
  • 2024-06-29如何批量寄快递批量寄快递,对于刚做电商的新手小白、企业节假日客户福利、放假前的校园来说,都是常见的场景,往往这种时候总是让人捉襟见肘平时寄快递一般是一个两个的,觉得快递费贵也就是几块钱的事,现在突然面对着好几十个订。
  • 上海话剧艺术中心音乐剧(上海话剧艺术中心明星们除了舞台)
  • 2024-06-29上海话剧艺术中心明星们除了舞台为庆祝中华人民共和国成立70周年,上海话剧艺术中心在忙碌演出之余,策划拍摄献礼微电影《我和我的祖国》,9月29日正式对外发布,向祖国献礼、向人民汇报微电影围绕新中国成立70周年这一主题,充分利用上海话。
  • 南华寺旅游攻略一日游(香客礼佛必看攻略)
  • 2024-06-29香客礼佛必看攻略南华禅寺香客众多南华禅寺坐落于广东省韶关市的曹溪之畔,人称“东粤第一宝刹”;是中国佛教名寺之一,禅宗六祖惠能宏扬“南宗禅法”的发源地南华禅寺右侧息心园南北朝天监三年寺庙建成,梁武帝赐名“宝林寺”,至开。
  • 户口本上的家庭户是什么意思(集体户又是什么意思)
  • 2024-06-29集体户又是什么意思家庭户口是指中国当前的户口管理中,把以家庭立户的,即以“具有血缘婚姻或收养关系”立户的称为家庭户在我国的户口管理中,把以家庭立户的,即是以“具有血缘婚姻或收养关系”立户的称为家庭户;而把以“无血缘关系。