- 第一行一般是
#!开头,表示使用shell类型- `#!/bin/bash:使用bash shell,最常使用
- 还有zsh、dash等
- /bin, /sbin, /usr/bin,/usr/sbin:类似于 Windows 的环境变量,存放二进制文件,这样直接在命令行才能直接使用
变量
命名规则和其他语言类似 赋值是
=两侧不能有空格,不然变量名被认作执行命令
- 自定义变量:仅在当前 Shell 实例有效
- 环境变量:Linux 已定义的环境变量,可以使用
- PATH:shell 到哪些目录中寻找命令或程序
- HOME:当前用户主目录
- LOGNAME:当前用户的登录名
- HOSTNAME:主机名
- LANGUAGE:语言相关环境变量
- Shell 变量:Shell 程序设置的特殊变量,包含环境变量和局部变量,保证了 Shell 正常运行
- 查看:
- env 查看所有环境变量
- set 可以查看环境变量和自定义变量
- 获取:
$varible
字符串
可以使用单引号或者双引号,和 Python 类似
- 双引号中
- 用
$解析其他变量 \转义- 反引号、感叹号
- 用
- 单引号中所有字符不会解析、转义
- 拼接字符串:
"hello, ${name} !"将 name 拼接到当前字符串"abc""de":等于 abcde,相当于冗余一个双引号
- 获取长度:
${#variable} - 截取子字符串:
echo ${varible:[begin]:[end]}
数组
- 只有一维数组。
- 定义:
*a=(1 2 3 4) - 获取长度:
${#arr[*]} - 索引:
arr[0] - 获取值:
${arr[0]},如果不加大括号,arr[0]会被当成字符串字面量 - 删除元素:
unset arr[0],不加索引删除所有
运算符
算数:加减乘除取余(一般不用)
关系运算符
-eq:相等,equal,等价于=-ne:不相等,not equal,等价于!=-gt:大于,greater than-lt:小于,less than-ge:大于等于,greater equal-le:小于等于,less equal
逻辑运算符
&&:逻辑与,等价于-a(and)||:逻辑或,等价于-o(or)!:逻辑非
字符串运算符
-z $s:字符串长度是否为0,zero-n $s:字符串长度是否不为 0,not zerostr $s:字符串长度是否为空
流程控制
- 条件:注意中括号两边需要有空格
bash
#!/bin/bash
a=3;
b=9;
if [ $a -eq $b ]
then
echo "a 等于 b"
elif [ $a -gt $b ]
then
echo "a 大于 b"
else
echo "a 小于 b"
fi- for 循环
shell
for loop in 1 2 3 4 5
do
echo "The value is: $loop"
done
for i in {0..9};
do
echo i;
done函数
- 不带参数和返回值
shell
#!/bin/bash
hello(){
echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
hello
echo "-----函数执行完毕-----"- 带参数和返回值
bash
#!/bin/bash
funWithReturn(){
echo "第一个数字: $1"
echo "第二个数字: $2"
return $(($1+$2))
}
funWithReturn 1 2
echo "输入的两个数字之和为 $?"