1、变量的使用
#!/usr/sh
#1、声明即赋值 注意:等号两边不能留空格,留了空格就编程一个命令+两个参数
varName=name
#2、使用变量
$varName
${varName}
2、变量的分类
shell 内变量
在shell的解析环境中存在的变量
全局范围的变量(全局变量)
shell中*不使用任何修饰符修饰的变量*都是全局变量
不管实在函数内还是在函数外都一样
从申明语句调用开始一直到脚本结束,都是其声明周期
局部变量
用loca修饰
只能生命在函数内
从声明语句调用开始一直到函数结束
环境变量
操作系统自带的,每个进程都会有(env查看)
当启动一个子进程的时候,环境变量是从父进程拷贝到子进程的。
子进程做任何环境变量的修改,不会影响父进程
环境变量是单向传递的
export varName=value
或者
varName=value
export varName
删除变量
不管是环境变量还是普通的shell内变量
都可以使用unset 变量名 删除进程
- 具体的使用
#!/usr/bash
#全局变量
globalVar="hello"
function test(){
globalVar2="hello2" #不使用任何修饰符修饰的都是全局变量
local localVar="world"
echo $localVar #输出world
}
#调用函数
test
echo $globalVar $globalVar2
#输出 hello hello2
1、调用子进程
#!/bin/bash
echo 下面调用子脚本
#该子脚本相对路径。绝对路径都可以
source ./subShell.sh
3、文件名替换和参数拓展
touch 1.txt 2.txt 3.txt 4.txt
touch {1,2,3,4}.txt
#eg1
touch {3..5}_{2..5}.txt
#eg2
mkdir -vp day{1..3}/{logFile.log,log.txt,log.note}
#查看当前文件夹内容
find .
- eg
4、命令代换
由"`"反引号括起来的也是一条命令,shell先执行该命令,然后将输出结果立刻代换到当前命令行中。例如定义一个变量存放date命令的输出
DATE=`date`
echo "DATE=" $DATE
#命令代换也可以用$()表示
DATE=$(date)
echo $DATE
5、算术代换
使用 ( ( ) ) 做 算 术 计 算 , ( ( ) ) 中 的 s h e l l 变 量 取 值 将 转 换 成 整 数 , 同 样 含 义 的 (())做算术计算,(())中的shell变量取值将转换成整数,同样含义的 (())做算术计算,(())中的shell变量取值将转换成整数,同样含义的[]等价
var=45
#执行下面命令,输出结果48
echo $((var+3))
echo $[var+3]或者$[$var+3]
#进制转换(将10以8进制来解析,得到的是10进制的8,加上11等于19)
echo $[8#10+11]
5、转义字符
用于去除单个字符的特殊意义(回车除外),换句话说。紧随其后的单个字符取字面值
#创建一个文件夹名为"$ $"的文件($间含有空格)可以这样
touch \$ $
\r \n
\$SHELL
6、单引号
shell脚本汇总的单引号双引号都是字符串的界定符,单引号用于保持括号内所有字符的字面值。即使引号内的\和回车也不例外。但是字符串中不能出现单引号
#输出结果$hello world
echo '$hello world'
7、双引号
被双引号括住的内容,将被视为单一字符、他防止通配符扩展,这点与单引号的处理方式不同
#输出结果是/bin/bash
echo "$SHELL"
param="i'm param"
echo "$param"