当前位置: 首页 > news >正文

Bash script进阶笔记

  1. 数组类型
arr=(1 2 3)					# 最基础的方式声明数组,用小括号(),元素之间逗号分隔
arr=([1]=10 [2]=20 [3]=30)	# 初始化时指定index
declare -a arr=(1 2 3)		# 用declare -a声明数组,小括号外面可选使用单引号、双引号
declare -a arr=(1 2 3)declare -a arr=([0]="a" [10]="b" [2]="c")	# 声明数组时指定indexecho ${arr[0]}	# output 1
echo ${arr[11]}	# not exist, output empty
  1. declare命令
    declare是bash内置命令,可为变量设置属性(值类型、访问类型等)。
    常用参数:
    -a: indexed array 数组
    -A: associative array Map类型
    -i: integer
    -r: read only
    -f: function
    -x: export,导出环境变量

  2. Map类型(关联数组)
    1)最外面是小括号(),内部元素间用空格分隔,下标用中括号[]指定。
    2)需要使用declare -A声明,不能像数组那样可省略declare -a
    3)必须提供‘下标’,下标可用数字(此时和数组类似),可以是字符串(单引号、双引号都可以)

declare -A map=(["a"]=10 ["b"]=20 ['c']=30)
echo ${map['a']}declare -A map=([1]=10 [2]=20 [3]=30)
echo ${map[1]}
  1. glob扩展
# 目录中有3个文件
$ ls
a1  a2  b1# [...]用括号内每个元素分别扩展,如果没有匹配的,则跳过,不会报错,不同于{...}扩展
$ ls a[123]
a1  a2# {...}和上面的匹配对比,如果存在不匹配的,会报错提示
$ ls a{1,2,3}
ls: cannot access 'a3': No such file or directory
a1  a2# a1.txt  a2.txt  b1.sh
# 多种扩展组合使用
$ ls [ab]1.{txt,sh,cpp}
ls: cannot access '[ab]1.cpp': No such file or directorya1.txt   b1.sh# {}扩展第一项可为空,以下命令等效:cp a.txt a.txt.bak 
$ cp a.txt{,.bak}# {start..end} {start..end..step} 扩展一个范围
$ echo {1..5}
1 2 3 4 5
$ echo {1..5..2}
1 3 5
$ echo {3..1}
3 2 1# 子命令扩展
date_str=$(date)
date_str=`date`  # 等价echo $date_str# 算数扩展
ret=$((1+2*3))
echo $ret# 在脚本中,可以直接引用*.log
for logFile in *.log
doecho $logFile
done
  1. 关闭shell终端,不终止当前运行的程序
nohup some_cmd	# 解除some-cmd进程和当前shell的关联,some-cmd父进程改为initd
jobs # 查看当前后台运行的进程
disown %2	# 解除后台进程#2和当前terminal的关联,把其父进程改为systemd
disown -h %2# 查看shell option
shopt huponexit
shopt | grep huponexit
shopt -s huponexit	# set
shopt -u huponexit	# unset
http://www.lryc.cn/news/260277.html

相关文章:

  • OpenCV图像处理——Python开发中OpenCV视频流的多线程处理方式
  • webGL开发智慧城市流程
  • Django讲课笔记02:Django环境搭建
  • 黑豹程序员-原生JS拖动div到任何地方-自定义布局
  • <软考高项备考>《论文专题 - 7 论文的项目背景之技术架构》
  • 6.3 C++11 原子操作与原子类型
  • 智能优化算法应用:基于狮群算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • BERT、GPT学习问题个人记录
  • HeartBeat监控Mysql状态
  • 软件开发经常出现的bug原因有哪些
  • 代码随想录27期|Python|Day15|二叉树|层序遍历|对称二叉树|翻转二叉树
  • 鸿蒙开发组件之Web
  • 成绩分析。
  • Excel实现字母+数字拖拉自动递增,步长可更改
  • Java之Stream流
  • vue中element-ui日期选择组件el-date-picker 清空所选时间,会将model绑定的值设置为null 问题 及 限制起止日期范围
  • 使用模方时,三维模型在su中显示不了怎么办?
  • AR-LDM原理及代码分析
  • MySQL常见死锁的发生场景以及如何解决
  • Leetcode 47 全排列 II
  • C# 图解教程 第5版 —— 第18章 泛型
  • 保障事务隔离级别的关键措施
  • Docker导入导出镜像、导入导出容器的命令详解以及使用的场景
  • 虚拟化嵌套
  • 【XILINX】记录ISE/Vivado使用过程中遇到的一些warning及解决方案
  • Tableau进阶--Tableau数据故事慧(20)解构Tableau的绘图逻辑
  • 45.0/HTML 简介(详细版)
  • Python 如何进行游戏开发?
  • 到底什么是DevOps
  • Keil生成bin文件