linux编写shell脚本程序(linux脚本编写教程)
linux编写shell脚本程序(linux脚本编写教程)
2024-11-22 05:29:00  作者:累累累累  网址: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-22蛋黄酥的热量1蛋黄酥的热量是多少每100克的蛋黄酥所含有的热量为386大卡,一个小蛋黄酥大约为35克,因此它所含有的热量就为135大卡,需要我们跳健美操40.3分钟才能将这些热量消耗掉另外,每100克的蛋黄酥所含。
  • 使命召唤怎么扔手雷(使命召唤扔手雷怎么做)
  • 2024-11-22使命召唤扔手雷怎么做快速扔雷设置方法:在游戏的设置选项的【基础设置】中我们找到【功能设置】,就可以将【快速投掷】开启或关闭了快速扔雷的作用:点击手雷就可以不用瞄准立刻将手雷投掷出去这样做的作用是防止对方趁着拨雷的时候攻击。
  • 喜迎二十大特稿(喜迎二十大特稿)
  • 2024-11-22喜迎二十大特稿编者按我们党团结带领中国人民走中国式现代化道路,创造了人类文明新形态,对于人类历史具有重大意义围绕中国式现代化这一重大理论和实践问题,作出一系列重要论述和指示批示,是我们奋进新征程、全面建设社会主义现。
  • 微信夜间模式怎么设置(有什么方法)
  • 2024-11-22有什么方法打开苹果手机,在苹果手机主屏幕上找到【设置】,点击进入进入设置界面,在设置列表中找到【通用】,点击进入进入通用界面,在通用列表中找到【辅助功能】,点击进入进入辅助功能界面,在辅助功能列表中找到【显示调。
  • 眷思量男主正脸(眷思量男神穿上西装)
  • 2024-11-22眷思量男神穿上西装动画中,所有的男神都穿着精致的古装,现在让他们穿上帅气笔挺的西装,萧霁颜值降低,镜玄帅成韩国欧巴程炜他是程家嚣张跋扈的长子,一向欺软怕硬,畏惧强权动画中他的戏份不是特别多,看上去也没有什么心机,比起他。
  • t ara回归新曲(T-ara新曲SugarFree)
  • 2024-11-22T-ara新曲SugarFreeT-ara曾以抄袭MV争议经受了一番波折,但这次再次被卷入抄袭争议T-ara11日午正,T-ara公开了第10张迷你专辑《And&End》主题曲SugarFree是EDM(电子舞曲)风格上。
  • 人生本无杂心静自然清(天下本无事庸人自扰之)
  • 2024-11-22天下本无事庸人自扰之1、我们的悲哀,不在于昨天的失去,而是沉陷于曾经的记忆,对一些人耿耿于怀,对一些事斤斤计较有些人,你再等,他也不会来,不如敞开心扉,给他自由,给自己空间有些事,你别悔恨,一切不再重演,不如淡漠往事,有。
  • 素描画初学零基础结构 结构素描很难画
  • 2024-11-22素描画初学零基础结构 结构素描很难画结构素描是什么?结构素描怎么画?结构素描,又称“形体素描”这种素描的特点是以线条为主要表现手段,不施明暗,没有光影变化,而强调突出物象的结构特征以理解和表达物体自身的结构本质为目的,结构素描的观察常和。
  • 老公坚持怀孕生孩子(我妈用尽各种手段想生男孩)
  • 2024-11-22我妈用尽各种手段想生男孩我妈用尽各种手段想生男孩,终于怀孕后,全家都哄着她她以为婚姻有救了只有我,在一个又一个邪恶的念头中日渐扭曲……1我妈跳楼了尸体周边围满了人,七嘴八舌地讨论着原因我爸在忙着跟外婆狡辩:「我真没做对不起她。
  • 庆余年2剧评(庆余年2宣发女主人选公布)
  • 2024-11-22庆余年2宣发女主人选公布2019年,一部改编自猫腻同名小说,由孙皓执导,张若昀、李沁领衔主演的古装大男主剧《庆余年》上线,该剧凭借着精彩的剧情设计和复杂的人物关系,一经播出便斩获了无数观众的心《庆余年2》宣发,女主人选公布,。
  • 世界上智商最低的动物前十名(世界上最会唱歌)
  • 2024-11-22世界上最会唱歌如果有这样的超级现场演唱会,而蜜蜂小姐是在舞台上“唱歌”,那么我们人类需要坐在3-4米的位置听,狗可以在20到30米的地方听到,兔子可以从100米以外听到猫头鹰和蝙蝠大是也可以使用主动探测技术从500。