bash 脚本笔记

1. sh 参数

$* 输入了什么参数
$# 输入了多少个参数
$1 输入的第一个参数,依此类推,直到 $9
$? 上一次的执行结果
$* 为”1 2 3”(一起被引号包住)
$@ 为”1” “2” “3”(分别被包住)
$# 为3(参数数量)

2. 文件测试

  1. [ -d target ] target 是否是 目录
  2. [ -f target ] 是否是文件
  3. [ -e target ] 是否存在(目录和文件都适用)
  4. [ -x target ] 可执行文件
  5. [ -n “target” ] 是否不为null(non-zero),用双引号把变量名包起来
  6. [ -z “target” ] 字符串是否为空(zero),用双引号把变量名包起来
    详情 见 man test

3. 数值型比较

    //变量赋值时,”=” 左右两边不能有空格
    age=30
    if [ $ -ge 20]
    then
        echo“age is bigger than 20else
        echo“age is less than 20fi
    // ---others-----
    –eq(equals)
    –ne(not equal)
    -gt( greater than)
    -lt(lessthan)
    -ge(greater or equal than)
    -le(less than or equal )

eg:

    bootpercent= df –hT | grep “sda1” | awk “{print $6}” | cut –d "%" –f1
       if [$bootpercent –ge 80 ];then
            echo "percent is bigger than 80,warning!!!"
        else
            echo "percent is less than 80"
       fi

4. 字符串比较

```bash
# "=" 需要空格
[ str1= str2 ] 
# str 是否为空
[ -z str ]
```

5. 逻辑条件测试

&& ||
if

 If [ $age–ge 30 ];then
    echo "great than 30"
 elif [ $age –ge 40 ];then
    echo “great then 40else
    echo50fi

case

 #`` 里面是命令:今天周几
 week= `date +%w` 
        case$week in : 
        start):
            echo“start”
            ;;
        stop):
            echo“stop”
            ;;
        *):
            Echo “other”
            ;;
        esac

6. 循环条件测试

while

num=3
while [ $num –ge 0 ]
do
    echo$num
    num=$(($num-1)) # ‘=’左边的num不需要$ ?
done
    echo$num

for

for i in ` cat /var/user.txt`
do
    echo$i
    echo123 | passwd –stdin $i
done

7. shift:传入的参数左移

num=0
while [ $# -gt 0 ]
do
        num=$((num+ $1))
        shift
done
        echo $num

8. find

find/etc/ -perm 755type f
# 跟find /etc –perm 755 | find –type f 不是一样,切记
find /etc –user root
find /etc –iname 'user*' | xargs rm –f

9. awk

# $0->整行,$1->第一列
# NR(Number Row):行号
# NF(Number Field):列号

cat/etc/passwd | awk –F ":" '{if(NR==3)print $1,$4}' ->打印第三行的第一个和第四个字段
cat/etc/passwd | awk –F 'END{print NR}' ->总共多少行
cat/etc/passwd | awk –F ‘END{print NF}’ ->总共多少列
cat/etc/passwd | awk –F “:” ‘{if(){print $1”\t”$4}}’
cat/etc/passwd | awk ‘$1 ~/192.168.10.1/ {print $0 } ’  -> ~ 匹配,!~ 不匹配

10.sed

# p -> print, d-> delete
cat/etc/passwd | sed –n '5'p –> 打印第五行
cat/etc/passwd | sed '3,6'd -> 打印删除3-6行之后的内容
cat/etc/passwd | sed '/bash/' p -> 打印匹配bash 的行
cat/etc/passwd | sed –n '1,/sync/'p -> 打印第一行到匹配sync的行
cat/etc/passwd | sed –n '/root/,$'p -> 打印从匹配root 到结尾的所有行
cat/etc/passwd | sed –n '3'p | awk –F ":" '{print $4}' –> 39%
cat/etc/passwd | sed –n '3'p | awk –F ":" '{print int($4)}' –> 39

11. uniq 与 sort

uniq–c  #统计连续的次数
catfile | sort –t: -k1 –r # 以:为分隔符,取第一列,倒序排列

12. linux 启动流程

一:初始化阶段

  1. Grub 引导界面
  2. 识别硬件
  3. 初始化驱动

二:加载/etc/rc.d/rc.sysinit 系统初始化

  1. 进入欢迎界面
  2. 设置时钟
  3. 设置主机名
  4. 挂载文件系统
  5. 挂载光驱
  6. 进入3级别
  7. 启动虚拟内存
  8. 设置磁盘阵列

三:加载 /etc/rc.d/rc 进程管理脚本

  1. 设置防火墙
  2. 检测硬件变化
  3. 启动网络服务
  4. 启动3级别中允许启动的进程(/etc/rc.d/rc3.d中以S开头的服务名,S99以后就是登陆界面了)
  5. 进入登陆界面

13. 运行级别:(默认是3)

0: halt
1: singlemode user
2: multiuser without NFS
3: full multiuser
4: unused
5: X11 ( 3 with 图形界面)
6: reboot (所以,重启的话reboot,还可以 init 6)
查看运行级别 runlevel

14. 如何设置服务脚本在某个级别下开启或者关闭(以sshd为例)

  1. 查看sshd 服务在所有级别下的开关状态
    chkconfig –list sshd
  2. sshd 在 3 级别下开启/关闭
    chkconfig –level 3 sshd on/off
  3. 将自己的服务脚本改造成标准的rpm脚本
    cp sshd /etc/init.d

    在 xxx 中添加:
    #chkconfig:2345 90 20 (90为开机的顺序,20为关机的顺序,数值越大,优先级越高,自定义的脚本开机应较晚5,关机较早)
    #descrption: xxx server daemon

  4. 通过service 把自定义脚本进行开启和关闭
    service xxx start|stop|restart

  5. 通过chkconfig把自定义脚本设置为开机启动
    chkconfig xxx on/off

15. 原格式输出字符以及调用其他脚本

menu.sh

# Cat 的 heredoc使用方法
# 
cat << eof
              aaaaaaaaaaaaaa
              bbbbbbbbbbbbb
              cccccccccccccccc  
eof
# 引用 menu.sh
. menu.sh 

16. 设置颜色

# \033[ 设置颜色的标志,30 前底色,47 背景色,0m 还原
echo –e "\033[30;47m $str \033[0m"
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值