一、脚本
1、脚本调用方式:
ps -f 查看进程的依赖关系
sh script.sh 重新开启一个shell,进行脚本调用,使用重新开启的环境解析
./script.sh==/mnt/script.sh 在当前shell中执行,使用文件中指定的环境解析
source script.sh==. script.sh在当前shell中执行,使用当前环境解析
2、清空日志脚本
#!/bin/bash
line=`sed -n '$=' /etc/rsyslog.conf`
log_file=`grep RULES -A $line /etc/rsyslog.conf | awk -F " " '!/^#/&&!/^$/{print $2}' | sed -e 's/-//g' -e '/^:/d'`
for i in $log_file
do
>$i
echo $i is cleaned!!!
done
二、变量:
变量的定义
• 变量即在程序运行过程中它的值是允许改变的量 • 变量是用一串固定的字符来标示不固定的值的一种方法 • 变量是一种使用方便的占位符,用于引用计算机内存地址,该地 址可以存储 Script 运行时可更改的程序信息 • 在 shell 中变量是不能永久保存在系统中的,必须在文件中声明
在 shell 脚本中变量的种类
• 在 shell 中变量分为环境级变量,用户级变量,系统级变量 • 环境级变量只在当前 shell 中生效, shell 关闭变量丢失 • 用户级变量写在用户的骨文件中,只针对当前用户生效 • 系统级变量被写在系统的配置文件 /etc/profile 或 者 /etc/profile.d/ 中,对于所有用户都生效
1、变量分类
export A = 1 只在当前shell中生效
~/.bash_profile 普通用户自己的环境变量
/etc/skel/.bash_profile 超级用户环境变量
/etc/profile 系统环境变量
evn 查看环境变量
PS1 特殊变量,控制命令行最前边的字符
2、字符的转译及变量的声明
\ 转译单个字符
"" 弱引用,批量转译 "" 中出现的字符
'' 强引用,批量转译 '' 中出现的字符
'' 与 "" 两者的区别在于, "" 不能转译 "\","`","!","$"
${} 变量声明 例如:
A=1 echo $Ab
echo ${A}b
a = (1 2 3 4 5)
echo ${a[0]}
echo ${a[*]}
3、变量值传递
$0 脚本本身
$1 脚本后的第一串字符串
$2 脚本后的第二串字符串
$3 脚本后的第三串字符串
$# 脚本后所跟字符串的个数
$* 脚本后跟的所有字符串,模式为“ 1 2 3 “
$@ 脚本后跟的所有字符串,模式为“ 1”“2”“3”
$$ 脚本执行的PID
实例($*和$@的区别)
$*
$@
4、read实现变量传递
#!/bin/bash
read -p "please input ipaddress:" -s IPADDRESS -s隐藏输入
echo .....
ping -c1 -w1 $IPADDRESS &> /dev/null && {
echo $IPADDRESS is up!
} || {
echo $IPADDRESS ip down!
}
5、利用命令执行结果设定变量
Hostname=$(hostname)
Hostname=`hostname`
$? 是命令在执行完成之后产生的退出值 范围是 [0-255]
当 $0=0 时标示命令执行没有错误输出 这个值可以用 exit 命令执行
例如 exit 66
6、系统中命令别名的设定
alias xie='vim' 环境级别名设定
vim ~/.bashrc 用户级别名设定
alias xie='vim'
vim /etc/bashrc 系统级别别名设定
alias xie='vim'
unalias xie 删除别名,配置文件中的内容也要删除