linuxShellStudyNote
1 Shell 中的变量
-
使用declare声明变量
declare var_name=var_value
# declare -i var_name 将定义的变量定义为整数型变量
# declare -r var_name 声明的变量为只读 变量
# declare -p var_name 显示指定变量的属性和值
# declare -x var_name 将指定的变量通过环境输出到后续命令
-
清除变量
unset var_name # unset function_name 清除变量或函数
2 变量的引用
`` # 反引号,shell会将反引号中的内容视作命令,并用指向结果代替反引号以及反引号中的内容
'' #单引号,全引用,单引号中的所以内容都不会被解释成其他意思,只保留显示的意义
""# 双引号,半引用,双引号中的内容处理 `` '' "" $ \ 之外,均保留显示的意义
取变量的值
- 使用 $var_name # 获取变量的值,可能会出错
- 使用 ${var_name} # 推荐使用这种方式获取变量的值
3 算术表达式
-
使用let
let var=" var + 1"
let var=${var}+3
# 使用let时如果要在运算符左右使用空格,那么必须加上双引号
# 使用let 使用可以使用$,也可以不实用$
-
使用 expr
var=`expr $var1 \* $ var2`
# **实用expr时运算符左右必须实用空格,变量必须使用$ **
-
使用 $(())
var=$(( var1 +${var2} ))
# 可以使用$,也可以不使用$,运算符左右可以使用空格也可以不适用空格
-
使用$[]
var=$[ ${var1}+ var2 ]
# 可以使用$,也可以不使用$,运算符左右可以使用空格也可以不适用空格
-
使用
bc
# 前面的集中方法只能用于处理整数而不能用于处理浮点数运算
#
bc
提供任意精度的计算-
1 直接使用外部程序 bc
-
2 使用管道
res=` echo "${var1}/10 + 2*(3-5*4)" | bc -l `
-
4输入输出
-
read
输入read -r var1 var2
-
printf
格式化输出printf "%.3f\n" ${var}
5命令替换
- `shell_command`
$(shell_command)
6测试
-
字符串测试
# 字符串测试
-
整数测试
# 整数测试
-
文件测试
# 文件测试
7函数
1定义
func_name(){ statment1 statment2 } # or function func_name(){ statment1 statment2 }
2调用
func_name arg1 arg2 arg3
3函数链接/函数调用函数
helloWord(){ echo "Hello World" } function alice(){ echo "in allice" helloWord() echo "end" } #调用函数 allice()
4函数返回值
Shell 中的函数的返回值必须是0-255之间的整数,即函数只能返回状态码
函数的返回值可以通过
$?
来获取
5获取函数参数
# $# 获取参数的个数 # $n 获取第n个参数,其中n为正整数 # $@ $* 获取所有参数
# 移动位置参数 # shift function func(){ while (( $# > 0 )) do echo "${1}" echo $# #shift改变$#的值 shift done }
#间接参数传递 var1=var2 var3=var1 echo ${!var3} #output var2
# 传递数组 # shell 不支持传递数组,但是可以通过其他方式传递数组的值 func_name "${arr[@]}" # 双引号必须加,否则会出错
# 调用其他文件的函数 #! /bin/bash #载入函数库 . file_name.sh # dot 后面必须有**空格**