1.变量
定义变量
url="https://www.baidu.com"
使用变量
${url}
单引号和双引号的区别
1)以单引号’ '包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量和命令(命令需要反引起来)也会把它们原样输出
2)以双引号" "包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名和命令原样输出
Shell特殊变量:Shell KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲、*、
@
、
@、
@、?、$$
变量 含义
$0 当前脚本的文件名。
$n(n≥1) 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1,第二个参数是 $2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的所有参数。
$@ 传递给脚本或函数的所有参数。当被双引号" "包含时,$@ 与 $* 稍有不同,我们将在《Shell $*和$@的区别》一节中详细讲解。
$? 上个命令的退出状态,或函数的返回值,我们将在《Shell $?》一节中详细讲解。
$$ 当前 Shell 进程 ID。对于 Shell 脚本,就是这些脚本所在的进程 ID。
2.Shell 数组的定义
array_name=(ele1 ele2 ele3 ... elen)
${array_name[index]}
Shell获取数组长度
利用@或*,可以将数组扩展成列表,然后使用#来获取数组元素的个数,格式如下:
${#array_name[@]}
${#array_name[*]}
Shell数组拼接
array_new=(${array1[@]} ${array2[@]})
array_new=(${array1[*]} ${array2[*]})
Shell删除数组元素(也可以删除整个数组)
unset array_name[index]
unset array_name
alias:给命令创建别名
alias new_name='command'
alias myShutdown='shutdown -h now'
3.Shell数学计算
算术运算符 说明/含义
+、- 加法(或正号)、减法(或负号)
*、/、% 乘法、除法、取余(取模)
** 幂运算
++、-- 自增和自减,可以放在变量的前面也可以放在变量的后面
!、&&、|| 逻辑非(取反)、逻辑与(and)、逻辑或(or)
<、<=、>、>= 比较符号(小于、小于等于、大于、大于等于)
==、!=、= 比较符号(相等、不相等;对于字符串,= 也可以表示相当于)
<<、>> 向左移位、向右移位
~、|、 &、^ 按位取反、按位或、按位与、按位异或
=、+=、-=、*=、/=、%= 赋值运算符,例如 a+=1 相当于 a=a+1,a-=1 相当于 a=a-1
4.Shell if else语句
if语句
if condition
then
statement(s)
fi
if condition; then
statement(s)
fi
if else 语句
if condition
then
statement1
else
statement2
fi
if elif else 语句
if condition1
then
statement1
elif condition2
then
statement2
elif condition3
then
statement3
……
else
statementn
fi
5.Shell case in语句详解
case expression in
pattern1)
statement1
;;
pattern2)
statement2
;;
pattern3)
statement3
;;
……
*)
statementn
esac
case、in 和 esac 都是 Shell 关键字,expression 表示表达式,pattern 表示匹配模式。
1)expression 既可以是一个变量、一个数字、一个字符串,还可以是一个数学计算表达式,或者是命令的执行结果,只要能够得到 expression 的值就可以。
2)pattern 可以是一个数字、一个字符串,甚至是一个简单的正则表达式。
6.Shell while循环详解
while condition
do
statements
done
while ((i <= 100))
do
((sum += i))
((i++))
done
7.Shell for循环和for int循环详解
for((exp1; exp2; exp3))
do
statements
done
8.函数
function name() {
statements
[return value]
}