linux笔记 3-11 3-12 shell脚本

## 1.创建新shell脚本 ##

1. 创建包含bash命令的文本文件。文件的第一行应为:

#!/bin/bash

2. 使文件可执行(使用chmod +x scripts)

3.脚本调试模式:

#!/bin/bash -x

# bash -x scripts

 

## 2.引用和转义 ##

弱引用

将字符串放置在双引号中,保留字符串中所有字符的文字值,$、`、\和!字符除外。换言之,变量扩展和命令扩展在双引号内仍起作用。

例:

 

强引用将字符串放置在单引号中,保留字符串中所有字符的文字值,同时禁用所有扩展:

例:

 

转义

非引用的\是转义字符。它保留了下一个字符的文字值。(例如,\$PATH是确切的字符串$PATH,而不是PATH变量的内容。)

例:

 

## 3.数值运算 ##

 

1.$[]

例:

2.Expr

例:

 

3.(())

例:

 

4.Let

例:

 

## 4.循环for do done ##

 

## 5.位置参数 ##

参数总数:$#

位置参数自身:$0、$1、$2、$3....

所有位置参数: [email protected]、$*

例:

 

##6.test条件判断##

语法:test EXPRESSION 或 [EXPRESSION]

非零或零长度字符串运算符:test -{n|z} STRING

如果表达式为true,返回零退出状态,如果表达式为false,则返回非零退出状态

 

## 字符比较运算符 ##

= , !=

例:

 

## 数字比较运算符 ##

 

-eq等于

-ne不等于

-lt小于

-le小于或等于

-gt大于

-ge大于或等于

例:

 

 

## 文件状态运算符 ##

 

语法:test -{b|c|e|f|d|r|w|x|s|L} FILE/DIRECTORY,

或[ -{b|c|e|f|d|r|w|x|s|L} FILE/DIRECTORY ]

 

-b块文件

-c字符文件

-e文件存在

-f普通文件

-d目录

-r文件可读

-L软链接

例:

 

## 逻辑运算符 ##

-o

-a

&&为真时执行

||为假时执行

 

例:

 

## 7.if语句 ##

 

## 8.expect语句 ##

 

#!/usr/bin/expect

这一行告诉操作系统脚本里的代码使用那一个shell来执行。

set timeout 10

设置后面所有的expect命令的等待响应的超时时间,单位为秒。

spawn talk

pawn是expect的内部命令,作用是给后面的shell指令加个壳,用来传递交互指令。

expect "who"

判断上次输出结果里是否包含“who”的字符串,如果有则立即返回,否则等待超时时间后返回。

send "westos\n"

执行交互动作,相当于手工输入"westos"。

expect eof

作用是在输出中搜索文件结束符,如果没有这一行,脚本会立即退出,得不到正确结果。

interact

执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。否则退出登录。

$argv 参数数组

xpect脚本可以接受从bash传递过来的参数.可以使用[lindex $argv n]获得,n从0开始,分别表示第

一个,第二个,第三个....参数。

 

脚本练习:

扫描当前局域网主机,如果可以ping通的话。就登录进去创建userfile里的

用户并且对应passwdfile里的密码。如果这个用户存在了,不要更改人家的密码。

Scan脚本:

 

Scp脚本:

 

Ssh脚本:

创建用户脚本:

测试结果:

时间: 2024-10-15 23:26:52

linux笔记 3-11 3-12 shell脚本的相关文章

Linux 笔记 - 第十二章 Shell 脚本

博客地址:http://www.moonxy.com 一.前言 常见的编程语言分为两类:一类是编译型语言,如:C.C++ 和 Java等,它们远行前要经过编译器的编译.另一类是解释型语言,不需要编译,执行时,需要使用解释器一行一行地解释执行,如:awk.perl.python 和 shell 等. Shell 是一种脚本语言,属于上面提到的第二类语言,就必须有对应的解释器来执行这些脚本,最常见的脚本解释器是:bash. 在编写 Shell 脚本时,我们不仅会用到很多的 Linux 命令.正则表达

linux系统下重启tomcat的shell脚本

linux系统下重启tomcat的shell脚本: tomcat_home=/opt/apache-tomcat-6.0.32 #找到tomcat进程的id并kill掉 ps -ef |grep tomcat |awk {'print $2'} | sed -e "s/^/kill -9 /g" | sh - #删除日志文件,如果你不先删除可以不要下面一行 rm $tomcat_home/logs/* -rf #删除tomcat的临时目录 rm $tomcat_home/work/*

linux服务器批量部署应用系统shell脚本(Tomcat/jetty)

linux服务器批量部署应用系统shell脚本: 1.请更换代码内的服务器地址(Tomcat或jetty服务器) serverRoot=/home/undoner/java_tool/apache-tomcat-7.0.61 serverDir=/home/undoner/java_tool/apache-tomcat-7.0.61/webapps 2.请更换工程所属配置文件名称 /WEB-INF/classes/install.properties 3.请将war包上传至本命令同级的目录,执行

Linux学习笔记:bash颜色显示及shell脚本相关

bash的颜色显示规则: ASCII编码对于颜色进行设置: \033 :ctrl键 [:控制字符和颜色代码之间的间隔字符 0m:关闭颜色属性的命令: 1m:对于显示文本字符加粗 4m:为文本字符加下划线标识 5m:使文本字符闪烁 7m:将文本字符的背景色和前景色交换显示: 8m:将文本字符的背景色和前景色设置为相同颜色. 30m-39m:设置文本字符的前景色:38m和39m暂时没用 40m-49m:设置文本字符的背景色:48m和49m暂时没用 一个完整的程序,一般包含四类文件: 二进制文件(可执

Linux定时对日志批量打包Shell脚本及定时任务crontab 详细用法

一.需求背景     因此次项目的生产环境中部署了多套系统,每天会产生大量的日志(数百GB的量),侵占了服务器宝贵的存储资源空间.为了有效缓解服务器存储压力,考虑通过Linux的Shell脚本结合crontab定时每周一对上周7天的日志打包压缩,并删除原被打包的日志文件,以腾出更多可利用的存储资源空间. 对于初次接触Shell脚本的同学,建议先花几个小时时间学习一下Shell.附Shell教程链接如下: http://www.runoob.com/linux/linux-shell-proces

linux服务器部署jar包以及shell脚本的书写

背景:记录在linux环境下部署jar程序的过程 1 部署过程记录 1.1 程序结构 这里的main函数就在DemRest2.java 文件中. 为了部署方便,要做到以下两点: 1 在导出的jar包中不包含依赖的jar文件 2 程序用到的配置文件可以让用户进行自定义 ,不将其放在jar包中. 1.2 导出jar包 这里导出普通的jar包即可.为了方便传输,只导出必须的程序文件. 在jar包导出后,进入导出的jar包中,将配置文件tws.properties文件删除. 1.3 程序部署 将所有需要

Linux就该这么学——编写SHELL脚本

初识SHELL Shell脚本命令的工作方式: 交互式 : 用户每输入一条命令就会立即执行 批处理 : 由用户事先编好一个完整的SHELL脚本,shell脚本会一次性执行脚本中诸多的命令. 注: 1.查看SHELL变量可以发现当前系统已经默认使用Bash作为命令终端解释器了; 2.可以把SHELL终端解释器当做人与计算机之间的”翻译官”,它作为用户与Linux系统内部的通信媒介,除了能够支持各种变量与参数外,还提供诸如循环,分支等高级编程语言才有的控制结构特性. SHELL脚本初体验之我的第一个

linux学习笔记-第十二课-Shell脚本之正则表达式(一)

一.grep,egrep,fgrep 1)grep 格式:grep [选项] [模式] [文件名] 常用选项:-n:显示行号和匹配的行 -v:反向匹配 -c:不显示匹配的行,只显示匹配的行数 -i:忽略大小写 -r:递归搜索 -E:支持扩展正则表达式 -P:支持Perl正则表达式 -F:不支持正则表达式,将模式按字面意义匹配 示例: grep示例 说明 grep '\<Tom>\' file 显示包含单词Tom的行 grep 'Tom Jerry' file 显示包含'Tom Jerry'的行

linux下利用curl监控网页shell脚本

#!/bin/bash smail() {mail -s "$1" [email protected] <<EOF$1$2====report time: `date +"%F %T"`current user: `whoami`shell script: `echo $0`====EOF} ssms() {/usr/local/feixin/fetion --mobile=150000000 --pwd=******** --to=1381000000

Linux 常用命令解析及Bash Shell脚本用法示例

 摘要 Linux 命令是基于文本格式输入输出的一种程序,按照Unix哲学中强调的程序功能简单,输入宽松,输出严谨,各种程序组合可以具有更强大的功能,而具有这种灵活性的主要原因是Linux规定程序的输入输出必须坚持文件流格式,即文本格式,而这就是Linux系统的核心之一. 对于Bash,即Shell的一种,为现在主流Linux发行版本默认的命令行解释器,是一种功能强大的工具,可以实现对Linux支持的程序命令的组合,从而实现强大功能.类似于Window系统的bat文件,Bash具有更为强大的