shell脚本编程之变量的小用法
变量赋值
${parameter:-word}:如果parameter为空或未定义,则变量展开为"word";否则,展开为parameter的值;
${parameter:+word}:如果parameter为空或未定义,不做任何操作;否则,展开为"word"值;
${parameter:=word}:如果parameter为空或未定义,则变量展开为"word",并将展开后的值赋值给parameter;
${parameter:?word}:如果parameter为空或未定义,则显示为错误,错误信息为"word";
${parameter:2}:跳过parameter的前两个字符,取parameter后面的所有字符;
${parameter:2:3}:跳过parameter的前两个字符,从parameter的第三个字符开始往后取三个字符;
示例
[root@centos6 ~]# vim test.sh
#!/bin/bash
. /root/f1.txt
TEST=${TEST:-'hello world'} #如果f1.txt中定义了TEST变量的值,就打印TEST值;如果f1.txt中未定义或TEST值为空,就打印后面的'hello world';
[ -n "$TEST" ] && echo "$TEST"
局部变量
local VAR_NAME function test {
local a=$[3+4]
}
在函数中定义局部变量,只在函数中有效,不影响函数外的变量;如果函数外也有同名的变量a,则函数中的变量a只在函数中有效,与函数外的变量a不冲突
mktemp的用法
生成临时目录和文件;
生成临时目录:-d
/tmp/目录每隔30天会做一次清理,30天没有被访问过的将会被清理 [root@localhost ~]# mktemp /tmp/file.XXXXX
/tmp/file.eJehp
[root@localhost ~]# mktemp /tmp/file.XXXXX
/tmp/file.0Z7KZ
生成随机指定字符个数后缀的文件,并且打印出文件路径
[root@localhost ~]# FILE=`mktemp /tmp/file.XXXXX` #把mktemp生成的临时文件和路径赋值给FILE变量
信号
kill -SIGNAL(信号) PID(进程编号)
1:HUP;终端断线
2:INT;中断(同 Ctrl + C)
3:QUIT;退出(同 Ctrl + \)
9:KILL;强制终止
15:TER;终止 脚本中,可以实现信号捕捉;但9和15信号捕捉不了;如果9和15信号可以捕捉,抓到信号抛弃掉,会造成脚本终止不了;
trap命令:bash_shell内置命令,可以实现信号捕捉;
trap 'command' 信号列表 示例1:
[root@centos6 ~]# vim date.sh
#!/bin/bash
trap 'echo "You go...";exit 1' INT #INT(2)信号等同于ctrl+c;设定信号捕捉,当捕捉到ctrl+c(2)信号时,用打印You go和exit代替2信号
while :;do
date
sleep 2
done
[root@centos6 ~]# bash date.sh
Wed Dec 11 20:00:42 CST 2019
Wed Dec 11 20:00:45 CST 2019
^CYou go... 示例2:
[root@centos6 ~]# vim ping.sh
#!/bin/bash
FILE=`mktemp /tmp/file.XXXXX` #函数外定义的变量可以用于函数中
NET=192.168.0
function signal {
echo "quit"
rm -f $FILE
exit 1
}
trap 'signal' INT #当接收到ctrl+c(2)信号时,执行signal函数,用于代替2信号
for i in {200..254};do
if ping -c 1 -W 1 $NET.$i &>/dev/null;then #ping命令会接收ctrl+c信号,所以不会退出循环
echo "$NET.$i is up" | tee >> $FILE #tee命令会把标准输入的内容输出到一个文件中
else
echo "$NET.$i is down"
fi
done
shell脚本编程之变量的小用法的更多相关文章
- shell脚本编程(一) 变量、条件判断、循环
目录 1. shell脚本编程 2. 运行 Shell 脚本有两种方法 3. 变量 4. 本地变量 5. 环境变量 6. 参数变量 7. 多行注释 8. if条件判断 ...
- shell脚本编程之变量简介及脚本执行过程
脚本变量简介 变量类型:字符型.数值型.真.假:事先确定数据的存放格式和长度: 变量存放在内存空间: 编译型语言,没有额外的处理逻辑,属于强类型语言: 脚本型语言,可以有解释器控制:所以,可以是弱类型 ...
- 浅谈自底向上的Shell脚本编程及效率优化
作者:沐星晨 出处:http://blog.csdn.net/sosodream/article/details/6276758 浅谈自底向上的Shell脚本编程及效率优化 小论文,大家多批评指导:) ...
- centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课
centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件.目录属性 shell数组简单用法 $( ) 和$ ...
- shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量
7月11日任务 20.1 shell脚本介绍20.2 shell脚本结构和执行20.3 date命令用法20.4 shell脚本中的变量 20.1 shell脚本介绍 1.shell脚本语言是linu ...
- Linux centosVMware shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量
一. shell脚本介绍 shell是一种脚本语言 aming_linux blog.lishiming.net 可以使用逻辑判断.循环等语法 可以自定义函数 shell是系统命令的集合 shell脚 ...
- Shell脚本编程总结及速查手册
Shell是一种编程语言, 它像其它编程语言如: C, Java, Python等一样也有变量/函数/运算符/if语句/循环控制/… 但在开始之前, 我想先理清Shell语言与Shell之间的关系. ...
- SHELL脚本编程的常识和VI常用技巧
来源:http://mprc.pku.edu.cn/mentors/training/TrainingCourses/material/ShellProgramming.HTM#_Toc3751808 ...
- centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课
centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 ...
随机推荐
- HashMap的内部结构与hash冲突
HashMap的内部结构 HashMap简介: HashMap继承AbstractMap,AbstractMap实现Map接口 HashMap是线程不同步的,线程不安全的 HashMap可以把null ...
- JavaWeb 之 EL表达式
EL 表达式 一.概述 1.概念 EL 表达式:Expression Language 表达式语言. 2.作用 替换和简化 jsp 页面中 java 代码的编写. 3.语法格式 ${表达式} 4.注意 ...
- webpack练手项目之easySlide(三):commonChunks
Hello,大家好. 在之前两篇文章中: webpack练手项目之easySlide(一):初探webpack webpack练手项目之easySlide(二):代码分割 与大家分享了webpack的 ...
- Web渗透
- 【Intellij Idea】Intellij Idea 某个提示功能disable,想恢复怎么做
比如,恢复实现抽象类和接口的功能, 打开idea设置-->editor -->interntions 搜索 implement,然后将空白的打上勾
- 【问题】如何在Linux与Windows间共享文件
实验环境 Linux LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS L ...
- Java 返回字符串中第一个不重复字符的下标 下标从0开始
比如abcdefgabdef 其中字符c和g不重复,返回c的小标,下标从0开始,那么是2 package com.example.demo; import org.testng.annotations ...
- 你真的理解CountDownLatch与CyclicBarrier使用场景吗?
原文:https://blog.csdn.net/zzg1229059735/article/details/61191679 相信每个想深入了解多线程开发的Java开发者都会遇到CountDownL ...
- MacOS安装Docker
傻瓜式安装: 1. 浏览器或命令行下载:https://download.docker.com/mac/stable/Docker.dmg 2. 点击安装文件,拖动图标到应用 3. 确认安装正常:do ...
- jni接口
https://www.jianshu.com/p/d4a502420a89 #pragma once /*DO NOT EDIT THIS FILE - it is machine generate ...