关键词:
构建基本脚本
shell脚本关键在于输入多个命令并处理每个命令的结果,甚至可以将一个命令的结果传递给另一个命令。
创建shell脚本
使用touch命令创建文件:touch firstshell.sh
使用chmod命令赋予执行权限:chmod u+x firstshell.sh
#!/bin/bash
# 井号(#)是注释
echo 'this is first shell script'
上面脚本第一行(#!/bin/bash)表示用哪个shell来运行,第二行是注释部分,echo是输出命令,运行这个脚本会在控制台打印一段话。
执行脚本的两种方式
- 将shell脚本文件所处的目录添加到PATH环境变量中,任何地方输入脚本名称即可执行脚本
- 输入绝对或相对文件路径来引用shell脚本文件
shell脚本中的变量
shell脚本中可以使用系统的环境变量和自定义用户变量
#!/bin/bash
#使用系统环境变量,通过($)符使用变量,特殊符号用\\转译,单引号不会把$识别成去读取变量
echo "Path环境变量为:$PATH"
#自定义变量,注意变量名称区分大小写,带空格需要用引号
var1=zqq
var2=var1
var3="hello world"
echo "打印用户自定义变量:var1=$var1,var2=$var2,var3=$var3"
命令输出赋给变量
shell脚本可以从命令输出中提取信息,并将其赋给变量。把输出赋给变量后就可以在脚本中很方便的使用。
把命令输出赋给变量的两种方式:
-
反向引号(`)
-
$()格式
#!/bin/bash #将date命令输出结果赋变量 var1=`date` var2=$(date)
重定向输入和输出
有些时候需要将命令的输出保存到文件中,而不仅仅只显示在显示器上。base shell提供了操作符可以将输出重定向到另一个位置。也可以输入。
输出重定向
可以用大于号(>)进行输出重定向,也可以用双大于号(>>)进行输出重定向。他们到区别是单大于号是覆盖操作,如果已经有文件,会覆盖掉已经存在的文件,而双大于号是追加输出,如果文件已经存在会把输出的内容追加在后面。
#!/bin/bash
#输出重定向,覆盖将时间命令的输出到文件中
date > /logs/test.log
#输出重定向,追加
date >> /logs/test.log
输入重定向
输入重定向将文件内容重定向命令。
#创建啊atext文件,把文件内容重定向到wc命令
wc < atext
#内联输入重定向,直接将文本内容重定向到命令
wc << EOF
> aa
> bb
> cc
> dd
> ee
> ff
> EOF
管道
我们可以一个命令的输出重定向到另一个命令,这个过程叫作管道连接(piping)。管道符号(|)。可以通过管道符号把一个命令的输出重定向到另一个命令。
#常用的管道命令,查找程序进程信息。通过管道符号把进程信息的输出结果给到grep命令,
#然后搜索到java关键字的信息
ps -ef | grep java
控制脚本
Linux利用信号与运行在系统上的进程进行通信。base shell允许用键盘上的组合建生成两种基本的Linux信号
1、中断进程:ctrl + c
ctrl+c会生成终止进程信号(2),并发送给当前shell中运行的所有进程,停止shell中当前运行的进程。
2、暂停进程:ctrl + z
ctrl+z会生成一个暂停信号停止shell中运行的进程,但不终止进程。
捕获信号
捕获信号可以在信号出现时捕获他们并执行其他命令。trap命令允许指定shell脚本要监看并从shell中拦截的信号。如果脚本中收到了trap命令中列出的信号,该信号不再由shell处理,而是由本地处理。
命令格式:trap [命令] [信号值]
阻止用户通过ctrl+c来停止脚本
#!/bin/bash
#阻止用户通过ctrl+c来停止脚本
trap "echo 'Sorry,dont stop!'" SIGINT
#睡10s,期间通过ctrl+c无法终止脚本
sleep 10
#睡眠期间ctrl+c并不会影响后续执行下面的输出,如果不通过trap捕获则不会输出直接中断
echo "end print"
捕获脚本退出
#!/bin/shell
#捕获退出
trap "echo 'script exit'" EXIT
sleep 10
echo "the end"
修改或移除捕获
修改捕获只需要在脚本别的地方重新使用trap捕获,如果在修改前被捕获到则会执行之前定义的,否则会执行之后的定义。删除捕获只需在trap命令与希望恢复默认行为的信号列表之间建设两个破折号。
#!/bin/bash
trap "echo 'Sorry,dont stop!'" SIGINT
sleep 10
echo "update before"
#修改捕获
trap "echo 'Sorry,dont stop!===='" SIGINT
sleep 10
echo "update end" #删除捕获
trap — SIGINT
sleep 10
echo "end print"
以后台模式运行脚本
以后台模式运行脚本只需在脚本后加一个&符号。以后台模式运行脚本,会返回一个带有作业号的进程号的信息,并在后台运行。不过后台运行脚本的输出会打印在控制台。
#后台模式运行脚本
./shell.sh &
执行脚本后加&符号,在主shell退出时,会同时结束在后台运行进程,可以加nohup来阻止进行结束
#使用nohup命令,如果会话结束时,脚本会忽略终端发过来挂起信号
nohup ./shell.sh &
:构建基本脚本(代码片段)
...;可在同一提示符行输入它们,用分号隔开10.2创建shell脚本文件shell脚本第一行格式:#!/bin/bash通常shell脚本里,用#来注释行shell脚本的第一行是一个例外,#后!号告诉shell用哪个shell来运行脚本在指定了shell之后... 查看详情
:构建基本脚本(代码片段)
...;可在同一提示符行输入它们,用分号隔开10.2创建shell脚本文件shell脚本第一行格式:#!/bin/bash通常shell脚本里,用#来注释行shell脚本的第一行是一个例外,#后!号告诉shell用哪个shell来运行脚本在指定了shell之后... 查看详情
构建基本bash脚本(代码片段)
一第1个脚本#!/bin/bash#这一行表示用bash执行#test#这一行以及此后以#开头的行都是注释,不会被shell“解释”date #显示时间who #显示当前在线的用户写好上面的文件,命名"test.sh",可以如下执行脚... 查看详情
构建基本bash脚本(代码片段)
一第1个脚本#!/bin/bash#这一行表示用bash执行#test#这一行以及此后以#开头的行都是注释,不会被shell“解释”date #显示时间who #显示当前在线的用户写好上面的文件,命名"test.sh",可以如下执行脚... 查看详情
shell脚本基础之详解基本脚本的构建(代码片段)
基本脚本的构建重定向输出重定向覆盖追加输入重定向内联输入重定向管道执行数学运算expr命令使用方括号浮点数解决方案bc的基本用法在shell脚本中使用bc退出脚本查看退出状态码exit命令重定向有些时候我们需要保存某个命令... 查看详情
sh基本shell脚本(代码片段)
shell构建脚本基础(代码片段)
1.命令替换#!/bin/bash#命令输出负载给变量的两种方式#反引号字符(`)#$()格式d1=`date`d2=$(date)echo"Thedated1andtimeare:$d1"echo"Thedated2andtimeare:$d2" 查看详情
基本shell脚本的边界及变量(代码片段)
shell脚本与变量 shell脚本的用途:自动化常用命令执行系统管理和故障排除创建简单的应用程序处理文本或文件 shell脚本编写格式:第一行:shebang机制用#加shell类型开头后续可直接跟命令,用命令达到需要的效果即... 查看详情
shell脚本应用的基本概念(代码片段)
1、关于执行脚本:在shell脚本中,#表示注释,编写好的shell脚本可以通过“./脚本名”的方式执行脚本,但是需要文件本身具有x权限,还可以通过内部命令“source”或者“.”来加载文件中的源代码执行,“source”可简写为“sh”... 查看详情
脚本的基本编译(代码片段)
从本节开始,正式进入shell脚本编辑。1、使用多条命令 如果想使用两条命令同时运行,可以使用分号隔开来执行; 例如:date;who 注意,这种方式下面,单条命令的最大字符数量不能超过255个字符;2、创建脚本文... 查看详情
shell脚本——系统工具箱(systemtoolbox)(代码片段)
...码一些想法需要使用shell编写一个简单实用的系统工具箱脚本一共想出了两套方案本套综合了一些自己的想法不是很熟练大家看个乐(^o^)基本使用界面大概是这样分析需要的功能我的构思将其分成7个部分磁盘挂载信息部分内存使... 查看详情
shell编程shell基本概述与脚本执行方式(代码片段)
目录概述Shell是什么?Shell的分类Linux支持的Shell脚本执行方式echo输出命令实例-测试退格符实例-测试退格符和换行符实例-按照十六进制ASCII码输出实例-按照颜色输出第一个脚本脚本执行其他概述Shell是什么?Shell是一个命... 查看详情
shell脚本基础——shell运行原理+变量数组定义(代码片段)
...言2)解释型语言2.shell运行原理3.小结4.什么时候用到脚本?二、Shell脚本的基本用法1.脚本的基本写法2.脚本执行方法1)标准脚本执行方法2)非标准的执行方法3.bash基本特性1)常用快捷键2)常用的通配符4.... 查看详情
shell脚本从入门到实战(代码片段)
Shell文章目录Shellshell概述Shell脚本入门1.脚本格式2.第一个Shell脚本:helloworld3.第二个Shell脚本:多命令处理Shell中的变量系统变量1.常用系统变量2.案例实操自定义变量1.基本语法2.变量定义规则特殊变量:$n特殊变量:$#... 查看详情
shell脚本也要函数化(代码片段)
自上周开始,吾对构建脚本进行了函数化。针对两个系统uos/kylin,工作包括两个内容:构建脚本主流程函数化。原来脚本中主流程是写在一个文件中,这次把其中的多个步骤独立出来变成函数,这样主流... 查看详情
linux系统编程-shell脚本基本使用(数组函数字符串处理)(代码片段)
1.知识点介绍前面文章介绍了Shell脚本的变量、运算符、条件语句、循环语句的使用,这篇文章接着介绍Shell脚本里数组、函数、字符串处理相关语法。没有过多的理论介绍,每个知识点都配有一个例子程序,直接看例... 查看详情
简单shell脚本之检测centos7基本环境(代码片段)
个人开源镜像站站点下载http://decs.pcl.ac.cn:3731/mirrors/software/Linux/shell/http://decs.pcl.ac.cn:3731/mirrors/software/Linux/shell/check-centos7-base-env.shcheck-centos7-base-env.sh#!/bin/bashos()echo" 查看详情
shell脚本从入门到实战(代码片段)
Shell文章目录Shellshell概述Shell脚本入门1.脚本格式2.第一个Shell脚本:helloworld3.第二个Shell脚本:多命令处理Shell中的变量系统变量1.常用系统变量2.案例实操自定义变量1.基本语法2.变量定义规则特殊变量:$n特殊变量:$#... 查看详情