学习python风格, 优雅规范书写shell代码
var=VALUE # shell中变量赋值等号两边没有空格
${VARIABLE} # 调用变量的值
$(COMMAND) # 调用用命令执行的结果
var="string" # str数据类型建议使用双引号括起来
$ , ` , \ , ! , 除此之外, 双引号可以去掉所有字符的特殊含义
env # 查看环境变量
set # 查看所有变量
| 系统变量 | 注释 |
|---|---|
| HOSTNAME | HOSTNAME="mac" |
| PS1 | [[\e[31;49m]\u[\e[0m]@[\e[36;49m]\H[\e[0m] [\e[33;49m]\w[\e[0m] \t]\n$ |
| HISTSIZE | default 1000 |
| MAIL="/var/spool/mail/root" | |
| PATH | PATH="/usr/share/Modules/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/home/root/bin" |
| LANG | LANG="en_US.UTF-8" |
| RANDOM | a random number (0~32767) |
| HOSTTYPE | HOSTTYPE="x86_64" |
| MACHTYPE | MACHTYPE="x86_64-redhat-linux-gnu" |
| 变量 | 注释 |
|---|---|
| $0 | 返回当前脚本的文件名 |
| $n | 返回传递给脚本的参数. n是一个数字, 表示第几个参数 |
| $# | 返回传递给脚本或函数的参数个数 |
| $* | 返回传递给脚本的所有参数, 数据类型: 字符串 |
| $@ | 返回传递给脚本的所有参数, 数据类型: 数组 |
| $? | 返回脚本或命令运行的退出状态 |
| $$ | 返回脚本运行的当前进程号 |
在当前shell中取消某变量
e.g. unset name

子程序会继承父程序的环境变量, 子程序不会继承父程序的自定义变量
export: 自定义变量转成环境变量
e.g. export name="Zak"

相当于python中input()
e.g. read -p "please input your name: " myname

宣告变量的数据类型
变量的数据类型默认为字符串
Using + instead of - turns off the given attribute.
declare [-aixr] VARIABLE
Options:
-a # array
-i # integer
-x # to make VARIABLE export ("+x": to cancle )
-r # to make VARIABLE readonly
-p # display the attributes and the value of each VARIABLE
*下面仅简单介绍BASH中数组的基础用法, 复杂的使用可以阅读本文参考中的文章, 不过我会选择用更为灵活的python来写^_^*
方法一
array_name=(value1 value2 value3 ...)

方法二
array_name[0]=value1
array_name[1]=value2
array_name[2]=value3
...

读取一个元素
echo ${array_name[index]}

读取所有元素
echo ${array_name[*]}
或者
echo ${array_name[@]}

获取数组长度的方法与获取字符串长度的方法相同
echo ${#array_name[*]}
或者
echo ${#array_name[@]}

| 用法 | 说明 |
|---|---|
${变量#关键词} |
若变量内容从头开始的数据符合关键词, 则将符合的最短数据删除 |
${变量##关键词} |
若变量内容从头开始的数据符合关键词, 则将符合的最长数据删除 |
${变量%关键词} |
若变量内容从尾向前的数据符合关键词, 则将符合的最短数据删除 |
${变量%%关键词} |
若变量内容从尾向前的数据符合关键词, 则将符合的最长数据删除 |
${变量/旧字符串/新字符串} |
若变量内容符合旧字符串, 则第一个旧字符串会被新字符串替换 |
${变量//旧字符串/新字符串} |
若变量内容符合旧字符串, 则全部的旧字符串会被新字符串替换 |
原文:https://www.cnblogs.com/zakzhu/p/11615422.html