Bash 基础

参考:《鸟哥的 Linux 私房菜》

1. Shell 与 Bash

查看系统支持的 Shell:

cat /etc/shells

查看当前使用的 Shell:

echo $SHELL

脚本声明(Shebang):

#!/bin/bash

2. 变量

2.1 基本赋值

x=1
y="this is a string"
echo $x
echo $y
[dmtsai@study ~]$ name=VBird
[dmtsai@study ~]$ echo $name
VBird

注意:赋值时等号两边不能有空格

2.2 引号区别

# **双引号会"解析"变量,而单引号会把所有内容当作"纯文本"**
# 双引号
[dmtsai@study ~]$ myname="$name its me"
[dmtsai@study ~]$ echo $myname
VBird its me
 
# 单引号
[dmtsai@study ~]$ myname='$name its me'
[dmtsai@study ~]$ echo $myname
$name its me

2.3 数组

arr=(1 2 3 4)
echo ${arr[@]}
echo ${arr[0]}
 
files=$(ls)
echo ${files[@]}

2.4 环境变量

export MY_ENV=1000
echo $MY_ENV

2.5 变量默认值

# 默认值 但不赋值
echo ${var1:-"hello1"}
# 默认值 且赋值
echo ${var2:="hello2"}

2.6 删除变量

unset varname

3. 脚本参数

# 脚本名称
echo $0
# 脚本第一个参数
echo $1
echo $2
echo $3
# 脚本参数个数
echo $#

4. 命令别名与历史命令

# 设置别名
alias ll='ls -l'
 
# 取消别名
unalias ll

5. 条件判断

a=1
b=2
if [ $a -gt $b ]; then
  echo "a 更大"
else
  echo "a 更小"
fi

6. 循环

for 循环

for num in 1 2 3 4 5; do
  echo "this is : $num"
done
 
for file in $(ls); do
  echo $file
done

while 循环

num=1
while (($num < 5)); do
  echo $num
  let "num++"
done

7. 函数

function bidaxiao(){
  if [ $1 -gt $2 ]; then
    echo "big"
  else
    echo "small"
  fi
}
 
bidaxiao 1 3

8. Shell 变量功能

echo $PATH
echo ${PATH}

9. 数据流重定向与管线

详见 Shell IO 重定向与管线命令