bash + script

时间:2024-06-16 12:36:08


shell

"" 保留$,`,\, 换行含义,‘’保留字面值

$(), ``用于命令替换

算术扩展如 $[1+1]

for循环:

for Host in host1, host2, host3; do echo $Host; done

for Host in host{1,2,3}; do echo $Host; done

for Host in host{1..3}; do echo $Host; done

for Package in $(rpm -a | grep kernel); do echo "$Package was installed on $(date -d @$(rpm -q --qf "%{INSTALLTIME}\n" $Package))"; done

for EVEN in $(seq 2,2,8); do echo "$EVEN"; done

2

4

6

8

调试模式

#!/bin/bash -x 或者 bash -x scriptname 或在脚本中插入命令set -x , set +x 分别开启和关闭调试

bash -v script 详细模式,每个命令执行器打印命令到标准输出 (set -v set +v)

特殊变量:

引用位置参数:$*,所有参数当成一个单词;$@,每个参数当成一个单词(返回数组)

$#参数数量

退出状态 $? 0 表示退出成功 (exit num可以用在脚本中作为退出代码)

if [$# -lt 3];then

echo "usage:...";

 exit -1;

fi

整数比较 [ "$a" -eq "$b"] [1 -eq 1]

-eq =

-ne !=

-gt >

-ge >=

-lt <

-le <=

字符串比较 ==, =, !=

字符串长度为零 -z

字符串不为空 -n

测试文件和目录:

bash + script

逻辑操作&&, ||

条件操作:

if a; then b;else c;fi

if a; then b;elif c;then d; else e; fi

写一个脚本查找最后创建时间是3天前,后缀是*.log的文件并删除。

find / -name "*.log" -ctime +3 -exec rm -f {} \;

安全删除修改日期5天前

find . -name "*.log" -mtime +5 -ok rm {} \;