1.shell特性

1.1命令排序

(1)在一行,敲多个命令,不具备逻辑判断./config; make; makeinstall
(2)&& || 具备逻辑判断,要看命令返回值echo $?./config && make && makeinstall

#ping通输出up不通输出down的应用
ping -c1 10.18.42.1 &>/dev/null && echo "up" || echo "down"      #-c1表示ping 1次,c即count次数

(3)Tips
command & 后台执行
command &>/dev/null 混合重定向(标准正确输出1,标准错误输出2)
command1 && command2 命令排序,逻辑判断(上一个命令的返回值为真,才会执行)

1.2shell通配符(元字符)

(1) * 匹配任意多个字符 ls in* rm -rf * ll *.txt
(2) ? 匹配任意一个字符 touch live love l7ve;ll l?ve
(3) []匹配括号内的任意一个字符[abc] [a-z] [0-9] [a-zA-Z0-9]
  其中^表示非,取反[^a-Z]:表示非字母字符
(4)() 括号内命令在子shell中执行,不想影响当前shell环境时使用 (cd /boot;ls) (umask 077; touch file1000)
(5){} 集合touch file{1..9}表示创建文件file1,file2,。。。。。file9 mkdir /home/{111,222}

#备份网卡配置文件为xxx.old的应用
cp -rv /etc/sysconfig/network-script/ifcfg-eth0 /etc/sysconfig/network-eth0.old
cp -rv /etc/sysconfig/network-script/{ifcfg-eth0,ifcfg-eth0.old}
cp -rv /etc/sysconfig/network-script/ifcfg-eth0{,.old}

(6) \ 转义符,让通配符回归本意,只转义其紧接着的后面的字符
\t Tab键 \n 换行

1.3echo输出颜色文本

echo -e "e[1;30m test e[0m"

  • -e 解释特殊符号
  • \e[1;30m` 到 \e[1;37m 文字颜色
  • \e[1;40m` 到 \e[1;47m 背景颜色
  • \e[0m` 恢复默认颜色

2.变量

2.1自定义变量

定义变量:变量名=变量值 ,变量名必须以字母或者下划线开头,区分大小写
引用变量:$变量名或者${变量名}
查看变量:echo $变量名 set(所有变量:包括自定义变量和环境变量)
取消变量:unset变量名
作用范围:仅在当前shell中有效

#!/usr/bin/bash
read -p "输入IP: " ip
ping -c1 $ip &>/dev/null
if [ $? -eq 0 ]; then
        echo "$ip is up"
else
        echo "$ip is down"
fi

2.2环境变量