退出shell 脚本】的更多相关文章

#!/bin/bash export TOP_PID=$$ trap 'exit 1' TERM exit_script(){ kill -s TERM $TOP_PID } echo "before exit" :|exit_script echo "after exit" EOF 执行结果为 before exit…
博客地址:http://www.moonxy.com 一.前言 常见的编程语言分为两类:一类是编译型语言,如:C.C++ 和 Java等,它们远行前要经过编译器的编译.另一类是解释型语言,不需要编译,执行时,需要使用解释器一行一行地解释执行,如:awk.perl.python 和 shell 等. Shell 是一种脚本语言,属于上面提到的第二类语言,就必须有对应的解释器来执行这些脚本,最常见的脚本解释器是:bash. 在编写 Shell 脚本时,我们不仅会用到很多的 Linux 命令.正则表达…
Shell脚本基础入门 Bash注释 Bash只支持单行注释,使用#开头的都被当作注释语句: # 整行注释 echo hello world # 行尾注释 通过Bash的一些特性,可以取巧实现多行注释: : ' 注释1 注释2 ' : <<'EOF' 注释1 注释2 EOF ____=' 注释1 注释2 ' 但是,别闲的蛋疼去用取巧的多行注释,安心用#来注释. Bash基本数据类型 Bash中基本数据类型只有字符串类型,连数值类型都没有(declare -i可强制声明数值类型). 比如: #…
常规做法 cat >test.sh<<EOF'' #!/bin/bash exit_script(){ exit 1 } echo "before exit" exit_script echo "after exit" EOF chmod a+x test.sh ./test.sh echo $? # 输出 before exit 1 可以看到直接使用exit可以退出脚本,并且可以将错误码作为参数传递.下面我们将脚本做一点点改动. 存在的问题 ca…
问题 最近在使用 Dockerfile 启动容器,发现使用Dockerfile调用容器里面的shell,当shell执行完成以后,docker会退出容器. 分析 Docker 在执行shell的时候,是在后台执行的:因此,在shell执行完成以后,docker检测到没有前台任务需要执行,便退出container. 解决方法 在shell脚本的最后加上一个“永远完成不了”的命令: # tail -f /dev/null 这样当执行到这条命令的时候,shell便不会退出,container也不会退出…
在shell脚本中,比如有以下的代码: cd /root/test88 rm -rf  backup 如果目录/root/test88不存在,脚本不会停止,依然会执行rm -rf backup这个命令 要让脚本停止执行: #!/bin/bash -e 或 set -e…
一.for循环 语法:for 变量名 in 条件; do …; done 案例1 #!/bin/bash sum=0 for i in `seq 1 100` do sum=$[$sum+$i] echo $i done echo $sum 文件列表循环 #!/bin/bash cd /etc/ for a in `ls /etc/` do if [ -d $a ] then ls -d $a fi done -d 表示判断是否为文件 for 会以空格作为分隔符 ls 空格./ 二.while循…
在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之后跑去群子了威吓其他群友,不就是个玩嘛,走着~~! 说起Linux中的脚本,毋庸置疑,用得最多的肯定是Shell脚本,其他的还有Python.Ruby等,估计根本没有人会想到其实C#也可以.说起C#,那可是尚方宝剑版存在,它上可写操作系统(CosmosOS.SharpOS等)下可写应用系统,桌面程序…
Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真”: 退出条件:当CONDITION为“假”: while CONDITION; do 循环体 控制变量的修正表达式 done 示例:求100以内所有正整数之和; #!/bin/bash # declare -i sum=0 declare -i i=1 while [ $i -le 100 ]; d…
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 for i in $(seq 0 2 100); do sum=$(($sum+$i)) done echo "Even sum: $sum." 示例2: #!/bin/bash # declare -i sum=0 for i in {1..100}; do if [ $[$i%2] -…
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令:PATH fork()创建为一个进程: 把要运行的一系列命令,写在文件中: 脚本或程序源文件:文本文件 两种方式: 编译执行:预处理---->编译---->汇编---->链接:事先完成,结果:二进制程序文件 C,C++ 解释执行:由解释器全程参与运行过程,每次读取一行,运行一行: Pyth…
亲自测试了一个大牛写的shell脚本,感兴趣可以看看,效果如下:…
转载自:http://www.92csz.com/study/linux/12.htm  学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本的编写是必考的项目.有的单位甚至用shell脚本的编写能力来衡量这个linux系统管理员的经验是否丰富.笔者讲这些的目的只有一个,那就是让你认真对待shell脚本,从一开始就要把基础知识掌握牢固,然后要…
一.我们先看看编写的shell脚本的内容,该shell的作用主要是实现监控某个程序崩溃之后就自动重启该进程. while true do procnum=` ps -ef|grep "test"|grep -v grep|wc -l` if [ $procnum -eq 0 ]; then /home/test& fi sleep 30 done -eq意思是等于0,用于判断该test是否还在运行状态.监控/home/test这个程序是否运行. 二.由于该程序是window上的…
Shell文件包含 shell也可以包含外部脚本,语法格式如下: . filename 或 source filename 例如创建两个shell脚本. 脚本1:test1.sh url = "www.baidu.com" 脚本2:test2.sh . ./test1.sh echo "$url" 执行test2.sh,即可看到结果. Shell输入输出重定向 命令 说明 command>file 将输出重定向到file command<file 将输入…
shell是一种程序设计语言,是访问操作系统内核的服务. Linux的shell种类常见的有: Bourne Shell(/usr/bin/sh或/bin/sh) Bourne Again Shell(/bin/bash) C Shell(/usr/bin/csh) K Shell(/usr/bin/ksh) Shell for Root(/sbin/sh) Shell脚本执行的两种方法 ./shell.sh 根据shell脚本第一行指定的shell执行 /bin/sh test.sh 根据命令…
在oracle 中可以利用dbms_job包定时执行pl/sql.sql过程,在像备份等需要在操作系统级定时任务只能采用crontab来完成 本文讲述crontab具体用法,以供备忘. 在oracle 中可以利用dbms_job包定时执行pl/sql.sql过程,在像备份等需要在操作系统级定时任务只能采用crontab来完成 利用crontab来定时执行任务大致有如下三步: 1.编写shell脚本 2.利用crontab加入到定时任务队列 3.查看作业完成情况 一.如何建立shell脚本 Lin…
PS:在做Linux下STM8固件升级项目中,需要让CPU通过I2C总线给STM8传输数据,刚开始一个一个的敲,很浪费时间,用shell脚本大大提高了数据传输效率,它是用户与内核进行交互操作的一种接口. 1.vi编辑器的使用 vi编辑器有两种模式,命令模式和输入模式.输入命令:vim test.sh,回车,即可进入命令模式,此时不能进行编辑,需要输入i进入输入模式.输入完之后按wq保存退出,按q不保存退出.(vim是vi的增强版) 2.给文件权限 方法1:chmod +x ./test.sh  …
一.     用户管理(添加用户.切换用户.删除用户) ~                                                                                    #波浪线,代表家目录 cd ~       和           cd                                                       #快速回到家目录 id           和           whoami      …
转自:http://www.ibm.com/developerworks/cn/linux/l-cn-shell-debug/ 一. 前言 shell编程在unix/linux世界中使用得非常广泛,熟练掌握shell编程也是成为一名优秀的unix/linux开发者和系统管理员的必经之路.脚本调试的主要工作就是发现引发脚本错误的原因以及在脚本源代码中定位发生错误的行,常用的手段包括分析输出的错误信息,通过在脚本中加入调试语句,输出调试信息来辅助诊断错误,利用调试工具等.但与其它高级语言相比,she…
在shell脚本一 中,我讨论了shell脚本的语法规范,shell脚本的变量,以及shell脚本的测试语句. 仅仅懂得这些只能写简单的脚本,在简单的脚本中各条语句按顺序执行,从而实现自动化的管理,顺序单一执行太过机械化,不够“智能”,难以实现更加灵活的系统任务.甚至一个简单的场景:现有100台linux服务器,其中有50台安装过某软件,有50台没有安装过某软件.如果没有流程控制及循环方面的脚本知识,如此简单的问题,也变得非常低效.所以本文带你走进shell脚本的流程控制及循环的世界.  一.多…
在windows下保存了一个脚本文件,用ssh上传到centos,添加权限执行nginx提示没有那个文件或目录.shell脚本放到/etc/init.d/目录下,再执行/etc/init.d/nginx,提示多了这句/bin/bash^M: bad interpreter.网上找了资料才知道如果这个脚本在Windows下编辑过,就有可能被转换成Windows下的dos文本格式了,这样的格式每一行的末尾都是以\r\n来标识,它的ASCII码分别是0x0D,0x0A.如果你将这个脚本文件直接放到Li…
既然是变量,自然分变量名和变量值,在使用的时候一定要注意哪些地方需要用变量名,哪些地方需要用变量的值. 自定义变量 shell变量不需要声明,随用随定义,给变量赋值的时候要注意 shell是空格敏感的 使用{}确定变量的范围是个好习惯 $NEWENV =123 #等号前面有空格,不行 NEWENV: command not found $NEWENV= 123 #等号后面有空格,不行 123: command not found $NEWENV=123 #RIGHT $BRACE=123 $ec…
1. 脚本实例 将以下脚本保存为 getftp.sh #!/bin/bash  datesign=`date -d -95day +%Y%m%d` ftp -nv 12.2.2.28 <<!FTPRUN user user01 user01  prompt bin cd TXT  lcd /app/info/getftp mget ${datesign}*.txt bye  !FTPRUN  脚本说明:  #!/bin/bash #表明该文本的内容为SHELL命令 datesign=`date…
  索引 1. 第一行必须是"#!/bin/sh" 2. 注释:一行开头为 # 3. 定义变量 4. 逻辑符号 5. 接收参数 6. 控制流:if/then/elif/else/fi 7. 循环:for/do/done 8. 格式化输出日期 9. exist 10. 系统变量 参考文档 索引 1. 第一行必须是"#!/bin/sh" 2. 注释:#号后的为注释 3. 定义变量 4. 逻辑符号 5. 接收参数 6. 控制流:if/then/elif/else/fi 7…
from:http://blog.sina.com.cn/s/blog_4152a9f501013r6c.html 常用的shell脚本 (2012-10-10 22:09:07) 转载▼ 标签: 杂谈 分类: Internet和计算机 1.脚本之间传递参数 "1.sh"的脚本,接受参数.如下,如果有一个参数则赋值个sourceFile这个变量,否则用默认值. Shell代码 #!/bin/bash LANG=en_US.UTF-8 #get parameters sourceFile…
通常在执行自动化过程中可能需要将root用户切换到其他用户进行执行,如:oralce 但是,执行的命令又要回到root用户下,继续执行root用户下的其他命令. 此时需要了解 su 命令中的参数 -c  或 -s 比如: # su - oracle -c "pwd"/home/oracle 或 su - oracle -s /bin/sh test.sh 此时执行的test.sh中相关命令要在bin/sh下,换句话说,bin/sh支持的命令才能执行. 当然我们可以将结果重定向到其他的文…
持续过滤log脚本 服务器端持续查看log的shell脚本(其中path1和path2替换为路径特征名,“tail -f”后面接的路径替换为路径特征名所对应的log文件路径): #! /bin/sh #Check log. echo "Which path(1/2):" read path echo "Keyword:" read keyword ' ]; then tail -f ../project/path1/log/xxx.log | grep -i &qu…
Shell脚本最常用于系统管理工作,或者用于结合现有的程序以完成小型.特定的工作. Shell的特点有: 1. 简单性 2. 可移植性 3. 开发容易 [什么是shell] 简单点理解,就是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具.实际上,在shell和计算机硬件之间还有一层东西那就是系统内核了.打个比方,如果把计算机硬件比作一个人的躯体,而系统内核则是人的大脑,至于shell,把它比作人的五官似乎更加贴切些.回到计算机上来,用户直接面对的不是计算机硬件而是shell,用户把指…
一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂     建立一个脚本 Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用.所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在 bash的大姐,bourne shell中运行).  如同其他语言一样,通过我们使用任意一种文字编辑器,比如nedit.kedit.emacs.vi  等来编写我们…