1、描述shell程序的运行原理(可附带必要的图形说明); |
SHELL是一种特殊的程序,官方定义为是和内核的接口,类似于内核的代理人。人类和LINUX系统对话时,需要一个翻译,而shell就是这个翻译。我们用SHELL编辑自己想要执行的一系 列命令后,SHELL可以翻译给系统内核听,然后系统内核执行。 |
2、总结shell编程中所涉及到的所有知识点(如:变量、语法、命令状态等等等,要带图的哟); |
//以下实例来自iredmail的安装脚本 tmprootdir="$(dirname $0)" //定义临时目录,也就是shell中的变量 echo ${tmprootdir} | grep ‘^/‘ >/dev/null 2>&1 if [ X"$?" == X"0" ]; then //根据上文中最后的命令状态,判断是否执行 export ROOTDIR="${tmprootdir}" //同时使用了命令状态和if判断 else export ROOTDIR="$(pwd)" fi # Create SSL/TLS cert file. check_status_before_run generate_ssl_keys //check_status_before_run是个函数 #下面是这个函数的定义 check_status_before_run() { # If function was successfully executed, this function will write one line # in $STATUS_FILE: # # export status_[function_name]=‘DONE‘ # function_name="${1}" //利用位置参数来获得变量值 function_status_name="status_${function_name}" function_status_value="$(eval echo \$${function_status_name})" if [ X"${function_status_value}" == X"DONE" ]; then ECHO_SKIP "Function: $1." else $function_name #if [ X"$?" == X‘0‘ ]; then # echo "export ${function_status_name}=‘DONE‘" >> ${STATUS_FILE} #fi fi } #另一个函数的定义,用到了for循环,if判断 backup_file() { # Usage: backup_file file1 [file2 file3 ... fileN] if [ X"$#" != X"0" ]; then //$# 添加到Shell的参数个数 for conf_file in $@; do //利用for循环读取配置文件, if [ -f ${conf_file} ]; then if [ X"${IREDMAIL_DEBUG}" == X"YES" ]; then echo -e "${_BACKUP_FLAG} ${conf_file} -> $(basename ${conf_file}).${DATE}." fi cp -f ${conf_file} ${conf_file}.${DATE} else : fi done else : fi } |
3、总结课程所讲的所有循环语句、条件判断的使用方法及其相关示例;(if (jpg|png is not exist);echo ”You say a XX“) |
原文地址:http://20150721.blog.51cto.com/10649191/1694665