shell脚本

shell脚本函数

无人久伴 提交于 2019-11-29 12:23:01
shell函数调用 函数的所有 标准输出 都传递给了主程序的变量 value_name=` function \ _name [arg1 arg2...] 获取函数的返回值 状态 function_name[arg1 arg2...] echo $? 函数变量的作用域 全局变量 局部变量 local 来源: CSDN 作者: 三里十步 链接: https://blog.csdn.net/mikkles/article/details/78142444

Shell脚本学习二

一个人想着一个人 提交于 2019-11-29 12:22:23
为什么80%的码农都做不了架构师?>>> 【shell脚本中的逻辑判断】 如果你学过C或者其他语言,相信你不会对if 陌生,在shell脚本中我们同样可以使用 if逻辑判断。在shell中if判断的基本语法为: 1)不带else if 判断语句;then command fi 在if1.sh 中出现了((a<60))这样的形式,这是shell脚本中特有的格式,用一个小括号或者不 用都会报错,请记住这个格式,即可。执行结果为: 2)带有else if 判断语句;then command else command fi 执行结果为: 3)带有elif if 判断语句一;then command elif 判断语句二;then command else command fi 这里的&&表示“并且”的意思,当然你也可以使用|| 表示“或者”,执行结果: 以上只是简单的介绍了if语句的结构。在判断数值大小除了可以用”(())”的形式外,还可以 使用”[]”。但是就不能使用>,<,=这样的符号了,要使用-lt(小于),-gt(大于),-le (小 于等于),-ge (大于等于),-eq (等于),-ne (不等于)。 再看看if中使用&&和||的情况。 shell 脚本中if还经常判断关于档案属性,比如判断是普通文件还是目录,判断文件是否有 读写执行权限等。常用的也就几个选项: -e

SHELL脚本学习笔记

浪尽此生 提交于 2019-11-29 12:19:51
SHELL脚本学习笔记 创建可执行的 SHELL 脚本 touch shell.sh chmod +x shell.sh # 授权:可执行 内建函数 # 打印 echo # 不换行打印 echo -n 变量 # 变量命名规范:字母、数字和下划线 # 取变量值: ${variable_name} 或者 $variable_name # 获取命令结果的值:$(command_name) 或者 command_name # 定义只读变量 readonly variable_name # 删除变量(不能删除只读变量):unset variable_name # SHELL变量作用域:局部变量、全局变量、环境变 SHELL 特殊变量 变量 含义 $0 当前脚本的文件名 $n (n>=1) 传递给脚本或者函数的参数。n 表示第一个参数,${10}… $# 传递给脚本或者函数的参数个数 $* 传递给脚本或者函数的所有参数 $@ 传递给脚本或者函数的所有参数, $? 上个命令的退出状态,或者函数返回值 $$ 当前SHELL脚本进程 ID 当它们被双引号" "包含时,就会有区别了: "$*"会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。 "$@"仍然将每个参数都看作一份数据,彼此之间是独立的。 函数定义 # 函数定义 # 定义 Shell 函数时不能带参数 # function

shell脚本学习方法

▼魔方 西西 提交于 2019-11-29 12:19:36
1,熟悉shell脚本基础知识点,掌握(sed,find,awk,cut等重要的命令。),掌握判断语句,循环语句的使用,和shell脚本的格式,步骤要写工整。 2,练习shell脚本,从简单的脚本练起走,自己先敲一边,在看里面的内容是如何实现的。在回过头来看相关的知识点(不用死记硬背,用到的时候在记一下,慢慢就熟悉了。),然后就是练习,看里面的内容如何实现。 3,思考人家的脚本是如何实现问题的,总结方法。比如说截取的方法,批量创建的方法,监控的方法等等。思考问题应该通过什么方法实现,想不出来就学习他人的方法。 4,脚本是拿来用的,简单脚本熟练后就可以学习,总结实用的脚本练习了。比如批量创建用户,监控CPU,磁盘使用率,恶意IP攻击,定时备份等等以后企业运维实用的小脚本练习。 5,总结服务器有关脚本(dhcp脚本一键搭载,DNS一键搭载lamp一键搭载等等)上课老师有讲的,自己多练多总结。没老师的,看网上视屏教程(b站上很多学习shell脚本的视频)这些在企业中用得到的脚本要多思考和总结。 6,熟练后一定要经常练练,一个星期一两次啊,久了不练就会忘记了。 7,刚入门的新手建议,多敲,多看,多总结。知识点不用死记硬背,用到的时候在翻看记忆。 8,shell学习不是枯燥的,可以在网上找一些shell编程的小游戏来练练。 在这里我想交给大家的是学习方法,知识点那些网上一大把

shell练习题

对着背影说爱祢 提交于 2019-11-29 11:16:18
1、写一个脚本,给脚本传递两个参数,显示两者之和和两者之积 #!/bin/bash #写一个脚本,给脚本传递两个参数,显示两者之和和两者之积 read -p "请输入第一个数:" num1 read -p "请输入第二个数:" num2 echo $[$num1+$num2] echo $[$num1*$num2] 2、写一个脚本,能接受一个参数(文件路径),判断这个参数如果是一个存在的文件就显示“ok”,否则显示“No such file" #!/bin/bash read -p "请输入一个文件路径:" filename if [ -e $filename ];then echo "OK" else echo "No such file" fi 3、判断/etc/inittab文件是否大于100行,如果大于,则显示”/etc/inittab is a big file.”否者显示”/etc/inittab is a small file.” #!/bin/bash Line=`wc -l /etc/inittab | cut -d" " -f1` if [ $Line -gt 100 ];then echo "/etc/inittab is a big file." else echo "/etc/inittab is a small file." fi 4、给定一个用户

Linux Shell 之定时检测Tomcat运行

旧巷老猫 提交于 2019-11-29 10:46:07
相信很多用Tomcat做web容易的开发者都知道,Tomcat运行久了以后,会崩溃掉,并且原有的关闭和启动脚本并不能使用,因为端口仍然占用。因此需要做几件事: 关闭Tomcat,检测端口占用,启动Tomcat 检测Tomcat应用是否崩溃,如果崩溃,按照1的办法解决 定时检测,检测异常,按照2的办法解决 知道怎么做以后,着手进行。 1.关闭Tomcat,检测端口占用,启动Tomcat 关闭和启动Tomcat,在原本的bin目录下,都对应的startup.sh和shutdown.sh,我们要做的就是检测端口占用,强制关闭端口占用的进程。 function check_port(){ echo "Begin checking..." # exist process occupying port 80 if lsof -i :80 | grep -q ${pattern} then proc=`lsof -i :80 | grep ${pattern} | awk '{print $1}'` # get process name pid=`lsof -i :80 | grep ${pattern} | awk '{print $2}'` # get process id echo "Exist process ${proc} with id ${pid} occupying port

shell编程概念介绍及变量定义--关于脚本运行与shell进程之间的关系

不羁的心 提交于 2019-11-29 10:35:12
shell是用户与内核进行交互操作的一种接口,目前最流行的shell称为bash shell shell也是一门编程语言<解释型的编程语言>,即shell脚本<就是用 linux 的 shell 命令编程> 一个系统可以存在多个shell,可以通过 cat/etc/shells 命令查看系统中安装的shell,不同的shell 可能支持的命令语法是不相同的 基本格式 代码写在普通文本文件中,通常以 .sh为后缀名 例vi hello.sh: #!/bin/bash ##表示用哪一种shell解析器来解析执行我们的这个脚本程序 echo "hello world" 执行脚本:sh hello.sh 或给脚本添加x权限,直接执行:chmod +x hello.sh ./hello.sh 系统变量 linux shell中的变量分为“系统变量”和“用户自定义变量” 可以通过set命令查看系统变量 自定义变量 变量=值,等号两边不能有空格 例:STR=abc 变量名称一般习惯为大写 使用变量:$arg 双引号和单引号有区别,双引号仅将空格脱意,单引号会将变量引用比如$param脱意 unset A 撤销变量A readonly B=2 声明静态的变量B=2,不能unset export A 可把变量提升为当前 shell 进程中的全局环境变量,可供其他子shell程序使用

Shell脚本一

隐身守侯 提交于 2019-11-29 10:34:59
1、ping局域网IP 脚本一 -------------------------------------------------------------------------------------------------- #!/bin/bash ip=1 while [ $ip != "254" ];do ping 192.168.14.$ip -c 1 | grep -q "ttl=" && echo "192.168.14.$ip yes" || echo "192.168.14.$ip no" ip=`expr "$ip" "+" "1"` done -------------------------------------------------------------------------------------------------- 脚本二 #!/bin/bash ip="192.168.14." for i in `seq 1 254` do ping -c 1 $ip$i | grep -q 'ttl=' && echo "$ip$i yes" || echo "$ip$i no" done ---------------------------------------------------------------------------------

Shell one

瘦欲@ 提交于 2019-11-29 10:25:14
1.shell的运算符包括:算术运算符、关系运算符、布尔运算符、字符串运算符、文件测试运算符 1.1原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。     使用expr注意:1.完整的表达式要被 ` ` 包含, 注意使用的是反引号 ` 而不是单引号 ' 2.表达式和运算符之间要有空格 3. 运算符 说明 举例 + 加法 `expr $a + $b` 结果为 30。 - 减法 `expr $a - $b` 结果为 -10。 * 乘法 `expr $a \* $b` 结果为 200。 / 除法 `expr $b / $a` 结果为 2。 % 取余 `expr $b % $a` 结果为 0。 = 赋值 a=$b 将把变量 b 的值赋给 a。 == 相等。用于比较两个数字,相同则返回 true。 [ $a == $b ] 返回 false。 != 不相等。用于比较两个数字,不相同则返回 true。 [ $a != $b ] 返回 true。                  a.乘号(*)前边必须加反斜杠(\)才能实现乘法运算;            b.if...then...fi 是条件语句,后续将会讲解。            c.在 MAC 中 shell 的 expr 语法是: $((表达式)) ,此处表达式中的 "*

shell爬虫

空扰寡人 提交于 2019-11-29 10:08:04
#!/bin/bash curl_str='curl -x "http://http-pro.abuyun.com:9010" --proxy-basic --proxy-user H78H42TCN191075P:3D1EA6E4F458AB69' curl_str='curl -L --socks5 socks-cla.abuyun.com:8030 --proxy-user S822RB9T27K96TPC:5E68523C79E62C41' ### encode url encode_url(){ local supplier_name_encode="$(echo "$1" | tr -d '\n' | xxd -plain | sed 's/\(..\)/%\1/g')" echo "https://xin.baidu.com/s?q=${supplier_name_encode}&t=0"|perl -npe 's/\n//' } do_down_web_info_html(){ local url=$(encode_url "$1") local html_file="$2" # wget ${url} -O ${html_file} #echo -e "\n===================================> " ${curl_str} "$