Skip to content
  • 第一行一般是 #! 开头,表示使用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 zero
  • str $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 "输入的两个数字之和为 $?"

正在精进