变量赋值

${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. HashMap的内部结构与hash冲突

    HashMap的内部结构 HashMap简介: HashMap继承AbstractMap,AbstractMap实现Map接口 HashMap是线程不同步的,线程不安全的 HashMap可以把null ...

  2. JavaWeb 之 EL表达式

    EL 表达式 一.概述 1.概念 EL 表达式:Expression Language 表达式语言. 2.作用 替换和简化 jsp 页面中 java 代码的编写. 3.语法格式 ${表达式} 4.注意 ...

  3. webpack练手项目之easySlide(三):commonChunks

    Hello,大家好. 在之前两篇文章中: webpack练手项目之easySlide(一):初探webpack webpack练手项目之easySlide(二):代码分割 与大家分享了webpack的 ...

  4. Web渗透

  5. 【Intellij Idea】Intellij Idea 某个提示功能disable,想恢复怎么做

    比如,恢复实现抽象类和接口的功能, 打开idea设置-->editor -->interntions 搜索 implement,然后将空白的打上勾

  6. 【问题】如何在Linux与Windows间共享文件

    实验环境 Linux LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS L ...

  7. Java 返回字符串中第一个不重复字符的下标 下标从0开始

    比如abcdefgabdef 其中字符c和g不重复,返回c的小标,下标从0开始,那么是2 package com.example.demo; import org.testng.annotations ...

  8. 你真的理解CountDownLatch与CyclicBarrier使用场景吗?

    原文:https://blog.csdn.net/zzg1229059735/article/details/61191679 相信每个想深入了解多线程开发的Java开发者都会遇到CountDownL ...

  9. MacOS安装Docker

    傻瓜式安装: 1. 浏览器或命令行下载:https://download.docker.com/mac/stable/Docker.dmg 2. 点击安装文件,拖动图标到应用 3. 确认安装正常:do ...

  10. jni接口

    https://www.jianshu.com/p/d4a502420a89 #pragma once /*DO NOT EDIT THIS FILE - it is machine generate ...