变量赋值

${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脚本编程之变量的小用法的更多相关文章

  1. shell脚本编程(一) 变量、条件判断、循环

    目录   1. shell脚本编程   2. 运行 Shell 脚本有两种方法   3. 变量   4. 本地变量   5. 环境变量   6. 参数变量   7. 多行注释   8. if条件判断 ...

  2. shell脚本编程之变量简介及脚本执行过程

    脚本变量简介 变量类型:字符型.数值型.真.假:事先确定数据的存放格式和长度: 变量存放在内存空间: 编译型语言,没有额外的处理逻辑,属于强类型语言: 脚本型语言,可以有解释器控制:所以,可以是弱类型 ...

  3. 浅谈自底向上的Shell脚本编程及效率优化

    作者:沐星晨 出处:http://blog.csdn.net/sosodream/article/details/6276758 浅谈自底向上的Shell脚本编程及效率优化 小论文,大家多批评指导:) ...

  4. centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课

    centos   shell脚本编程1 正则  shell脚本结构  read命令  date命令的用法  shell中的逻辑判断  if 判断文件.目录属性  shell数组简单用法 $( ) 和$ ...

  5. shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量

    7月11日任务 20.1 shell脚本介绍20.2 shell脚本结构和执行20.3 date命令用法20.4 shell脚本中的变量 20.1 shell脚本介绍 1.shell脚本语言是linu ...

  6. Linux centosVMware shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量

    一. shell脚本介绍 shell是一种脚本语言 aming_linux blog.lishiming.net 可以使用逻辑判断.循环等语法 可以自定义函数 shell是系统命令的集合 shell脚 ...

  7. Shell脚本编程总结及速查手册

    Shell是一种编程语言, 它像其它编程语言如: C, Java, Python等一样也有变量/函数/运算符/if语句/循环控制/… 但在开始之前, 我想先理清Shell语言与Shell之间的关系. ...

  8. SHELL脚本编程的常识和VI常用技巧

    来源:http://mprc.pku.edu.cn/mentors/training/TrainingCourses/material/ShellProgramming.HTM#_Toc3751808 ...

  9. centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课

    centos  shell脚本编程2 if 判断  case判断   shell脚本中的循环  for   while   shell中的函数  break  continue  test 命令   ...

随机推荐

  1. 在Visual Studio 2019中安装Blend 4.5 SDK

    Visual Studio 2017安装时可以指定Blend SDK,到Visual Studio 2019时,安装时已经没有这个选项了. 官方提供的只有老版本4.0的安装包.要使用Blend SDK ...

  2. C# vb .net实现过度曝光效果滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的过度曝光效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...

  3. Python进阶----数据库引擎(InnoDB),表的创建,mysql的数据类型,mysql表的约束

    Python进阶----数据库引擎(InnoDB),表的创建,mysql的数据类型,mysql表的约束 一丶MySQL的存储引擎 什么是存储引擎:    MySQL中的数据用各种不同的技术存储在文件( ...

  4. 《我是一只IT小小鸟》(续)读书笔记——第八周

    第三位作者强调了大学阶段规划的重要性,作者初入大学,一切都很新鲜想尝试,却缺乏对学习生活的规划.最终导致的是学习成绩的下降.其实编程也是一样,我们常常感到自己和那些大神的差距,感慨过后,往往也就罢了. ...

  5. Linux 计划任务管理

    实际的生产环境中,总会做一些定期的任务,比如数据备份,我们不可能总等到那个时间去手动执行,这时计划任务就派上用场了. 一次性计划任务 at 一次性计划任务 at [HH:MM] [YYYY-MM-DD ...

  6. Yii2 路由美化

    一.美化路由形式 如:localhost/index.php?r=site/index 这种路由形式对SEO不友好,那么是否可以对路由进行一下美化呢?在Yii2中我们可以将路由必成以下的形式: 如:l ...

  7. xtrbackup备份,及恢复数据

    模拟定时任务周日备份数据,周一数据变化,周一crontab定时任务增量备份,周二数据变化,周二crontabl增量备份,然后有人删库,我们进行恢复数据 模拟crontab 里的定时任务周日全备 [ro ...

  8. svn checkout不带根文件夹方法

    checkout url/ .url后边加一个空格一个点(英文句号) svn checkout svn://10.177.261.128/mall/ .

  9. LeetCode - 24、两两交换链表中的节点

    给定一个链表,两两交换其中相邻的节点,并返回交换后的链表.你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2->3->4, 你应该返回 2-> ...

  10. CentOS7怎样安装Redis4.0.12

    一.安装 yum -y install tcl安装相关依赖 mkdir /usr/local/redis创建redis安装目录 cd /usr/local/redis 进入redis目录 wget h ...