第一行 - 解释器
#!/bin/bash
这个通常见于脚本的第一行,#!
算是个约定了 说明脚本需要什么解释器/bin/sh xx.sh
这种是执行的时候指定, 脚本第一行的那个就失效了
变量
规范
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
shell变量类型
- 局部变量
- 环境变量
- shell变量-shell内置特殊变量
变量定义 注意 不能随便加空格 下面的等号两侧不能加空格
# 直接赋值
xxx="lsmg"
xxx = "lsmg" # 错误
xxx="Jigokubana" # 随意修改
# 语句赋值
for skill in Ada Coffe Action Java
do
echo "I am good at ${skill}Script"
done
# 使用变量
echo $xxx
echo ${xxx} # {} 用于标记边界
echo "my name is ${xxx}"
# const
readonly xxx="lsmg"
# 删除变量
unset xxx; 不能用于删除只读变量
单引号 双引号 反引号
单引号将剥夺其中的所有字符的特殊含义
双引号中的$
(参数替换)和`(命令替换)有特殊含义
反引号与$()功能相同会执行其中的命令
aaa="aaa"
b1="$aaa"
b2=`$aaa` # 会先进行取变量值 $aaa -> aaa
b3='$aaa'
echo $b1 # aaa
echo $b2 # aaa: command not found
echo $b3 # $aaa
数学和运算类
val1=$(expr $val1 + 1) # 自增1
if [ $val1 -ge $val2 ] # 大小比较用 eq ge gt le lt ne
杂项
读入参数的最佳命令 read -p "input val1: " val1