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

目录 Shell Shell脚本的执行 Shell脚本编写规范 Shell中的变量 变量的算术运算 双小括号(())数值运算命令的用法 let运算命令的用法 expr命令的用法 br命令的用法 $[]符号的运算示例 Shell脚本的条件测试 几种条件测试语句 文件测试操作符 字符串测试操作符 整数二元比较操作符 逻辑操作符 测试表达式test、[]、[[]]、(())的区别 if条件判断语句 ca…

目录

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脚本

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编写Shell脚本

实验二

循环

循环执行介绍

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

重复运行次数

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

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

一篇文章教会你Linux编写Shell脚本

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年5月11日 下午1:44
下一篇 2022年5月11日 下午1:45

相关推荐

  • 成都百度推广哪家好,关键词霸屏推广公司

    随着移动互联网的发展,越来越多的传统企业转型或者创业想做自己的app(包括公众号,小程序,其他软件等),抢占互联网的流量红利。那对于做好一个app,怎么进行推广就成为了更重要的问题,因为长期运营成本远高于开发app的成本。 成都app制作开发团队好猫小编,根据从业互联网5年的经验,运营app的目的无外乎是获取更多的用户,活跃用户以带来价值转化(注册,下单),认为有以下两方面推广模式: 一方面是从a…

    2022年6月14日
    1220
  • 网店转让合法吗,网店转让四大注意事项

    在当今互联网发达的时代,通过互联网购物的人也是越来越多了。许多人还开始起了开设淘宝店铺的想法。尽管淘宝店铺只需要一张身份证,就可以拥有自己的淘宝店铺,但是对于淘宝店铺尤其是个人店铺。很多人在不做时一般会选择闲置,会有很多人选择出售转让他们的淘宝店铺。 那么淘宝店铺转让合法吗? 淘宝店铺转让显然要有店铺和用户。交易只需要考虑交易的形式。当前的淘宝店铺转让形式分为两种,熟人私下交易和通过网店转让平台转…

    2022年5月21日
    640
  • 微信怎么导出聊天记录,微信文件批量导出教程

    微信出了新功能:聊天记录“不显示”。 渣男们第一时间更新,并隐藏了各种不堪入目的对话框。 有句话说得好,“好男人都是相似的,渣男却各有各的渣”。 今天兔姐就给大家揭露——渣男十大常见骚操作,希望各位姐妹擦亮眼睛! 林子大了,什么渣男都有。 但遇到渣男不可怕,可怕的是不能及时止损,任其继续伤害你。 所以,对待渣男的正确方式就是:果断说拜拜

    2022年6月8日
    730
  • 大学生自主创业贷款需要什么条件,自主创业贷款优惠政策

    一、申请条件: 1、大学专科以上毕业生; 2、毕业后6个月以上未就业,并在当地劳动保障部门办理了失业登记。 二、贷款期限: 国家为大学毕业生提供的小额创业贷款是政府贴息贷款,其期限为1~2年,2年之后不再享受财政贴息。 三、贷款方式: 大学毕业生自主创业的小额贷款方式为担保、抵(质)押贷款。 四、有关说明 具体操作办法可向当地劳动和社会保障局咨询。此外,针对大学生自主创业还有其他优惠政策,例如从事…

    2022年5月20日
    1350
  • 销售管理软件推荐(免费销售管理软件排行榜)

    销售漏斗是描述销售过程的生动文字图片。这个比喻暗示了一个现实世界的漏斗,它的顶部最宽,逐渐变细。这类似于潜在客户成为实际购买者的过程。 您的潜在买家在顶部包含广泛的受众,由网站访问者、橱窗购物者或其他潜在客户组成。潜在买家的名单逐渐减少到底部。漏斗的最小部分代表转化或销售。这个比喻的重点是提醒每个企业主努力将潜在客户转化为买家,因为这是赚钱的唯一途径。 为了充分利用销售漏斗,了解潜在客户在购买前经…

    2022年5月7日
    790
  • 服务器的作用是什么,服务器的作用和用途介绍

    服务器是干什么用的?有什么用途?说起服务器,很多人都比较陌生,下面聚名网为你详解一下以上问题。 服务器是干什么用的,我们可以通俗的来说,只要是网络上能看到的不管是图片,还是视频,都离不开服务器,到现在,我会和他说,服务器是赚钱用的。 刚开始的时候还是觉得服务器的用途其实不是很大,因为那时候的站长都很穷,花好几百块钱相当于现在花好几千块钱一样的难,所以租用服务器的人真的非常的少,那时候还有很多人直接…

    2022年6月6日
    620
  • 无本钱如何创业,10个穷疯了快速挣钱的法子

    无本钱,白手起家如何创业?现在大部分人都会问到这个问题,但是真正能解答出这个问题的人寥寥无几。有人说,等我攒够我的第一桶金,攒够成本,我就去创业,我觉的这种说法是大错特错的。一个从无到有的过程才叫创业。属于普通人逆袭之路的无本钱创业应该要怎么做呢? 要创业首先要找到商机,那要怎么才能发现商机,找到适合自己的项目呢?首先要看清存在的问题,找到问题,你来提供相应的解决办法,这就是商机,比如,对于一些行…

    2022年6月27日
    1150
  • 创业成功故事分享,季琦的创业历程及感悟

    出身低微的农民大学生季琦,乡下小孩进城,生存和生活有太多困难,这些困难并没有压倒他。他靠自己的努力,一步一步走上成功路。 先来看季琦传奇创业故事 1966年10月出生; 1992年3月毕业于上海交通大学机械工程系机器人硕士专业; 1999年与梁建章、沈南鹏、范敏共同创建携程旅行网,出任总裁。2003年12月携程在纳斯达克上市,今天的市值将近60亿美元。 2002年创办如家连锁酒店,出任CEO。 2…

    2022年5月20日
    730
  • 微博营销活动策划方案,3种新颖的营销技巧

    现在越来越多的朋友都会开通微博,哪些微博最受欢迎,在微博的营销方面有哪些营销技巧呢?我是《营销探秘》的付老师,今天为大家来讲讲微博营销的技巧…. 1、微博定位 你如何定位微博?销售型?品牌传播型?客户关系管理?舆情监测?在这之前,我们要明确它都是能直接间接为我们带来利益的,以销售为核心,在前期阶段或微矩阵分工最好是定位品牌传播型,实际上就是做口碑营销,有利于培养有效粉丝,建立与客户之间的关系,…

    2022年6月23日
    580
  • 铁骆驼电瓶修复怎么样(电瓶修复行业现状)

    一、行业趋势分析 1.蓄电池行业已成为今后20年最有发展的行业之一 美国哥伦比亚batelle机构提出:“信息技术、化学电源、生物技术”将是今后20年最大的产品市场,具有最广阔的发展前景。而化学电源的代表产品主要是蓄电池,蓄电池之所以会占据未来市场的重要产品地位,其主要原因为不可再生能源日渐枯竭,而风能、太阳能等新能源的储备均严重依赖蓄电池并存。 2.铅酸电池持续发展保持市场龙头地位 自1859年…

    2022年5月11日
    1160

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信