shell 脚本
本文摘录自 Linux 命令行
因为Linux 开源,我们能看到很多 bin 目录下的运行脚本,但是有很多是似懂非懂的,其实 shell 脚本不难,以下是一个基础
1. shell 脚本
我们创建了一个脚本,要把它放到一个 bin 目录下(这个 bin 目录已经在你的配置文件中配置过路径即PATH,这样就可以直接启动这个 bin 下的脚本),然后将创建的脚本赋予可执行的权限,如 755。如下是我们创建的 sys_info_page 文件:
#!/bin/bash
# Program to output a system information page
TITLE="System Information Report For $HOSTNAME" # 将 title 定义为常量,$XX 就会自动去取这个常量
CURRENT_TIME=$(date +"%x %r %Z") # 通过括号,可以将常量区分开
TIME_STAMP="Generated $CURRENT_TIME, by $USER"
# 下面定义了三个函数,<PRE> 标签是为了让命令中的内容保持之前的输出格式。
report_uptime (){
cat <<- _EOF_
<H2>System Uptime</H2>
<PRE>$(uptime)</PRE>
_EOF_
return
}
report_disk_space (){
cat <<- _EOF_
<H2>Sytem Disk Space Utilization</H2>
<PRE>$(df -h)</PRE> # df -h 用来确定磁盘空间的数量
_EOF_
return
}
# report_home_space (){
# cat <<- _EOF_
# <H2>System Home Space Utilization</H2>
# <PRE>$(du -sh /Users/chappyzhao/*)</PRE> # 使用 du 的 -sh 命令,但是一般没有root权限的话会不能成功
# _EOF_
# return
}
report_home_space (){
if [[ $(id -u) -eq 0 ]]; then # [expression] 是一种测试表达式,我们这里使用了整型表达式,如果是字符型的话,会将 shell 命令引起来,像这样:if[ -e "$USER"];then...fi,这里的引号我们知道是可有可无的,这是为了防止获取到空值报错
cat <<- _EOF_
<H2>System Home Space Utilization</H2>
<PRE>$(du -sh /Users/chappyzhao/*)</PRE>
_EOF_
else
cat <<- _EOF_
<H2>Home Space Utilization ($USER)</H2>
<PRE>$(du -sh $HOME)</PRE>
_EOF_
fi
return
}
# 下面的整个模式是:命令 << token字符串 文本 token字符串。在这种文本中,但双引号都会是普通字符,可以随意加
cat << _EOF_
<HTML>
<HEAD>
<TITLE>$TITLE</TITLE>
</HEAD>
<BODY>
<H1>$TITLE</H1>
<P>$TIME_STAMP</P>
</BODY>
</HTML>
_EOF_
在退出编辑器后,需要将修改的文本复制到 html 页面以显示
sys_info_page > sys_info_page.html
再次感谢作者的开源精神:这里是电子版