shell高级编程之shell脚本执行与规范.docx

shell高级编程之shell脚本执行与规范

实例: #!/bin/bash #清除日志脚本 (#!又称为幻数) LOG_DIR=/var/log ROOT_UID=0 #$UID为0的时候,用户才具有root用户的权限#要使用root用户来运行 if [ $UID -ne $ROOT_UID ] then echo Must be root to run this script. exit 1 fi cd $LOG_DIR || { echo Cannot change to necessary directory . 2 exit 1 } 查看默认 shell $SHELL grep root /etc/passwd shell脚本运行时,先查找环境变量ENV ,该变量指定一个环境文件 (通常为 .bashrc) 读取文件后开始执行脚本 执行脚本的三种方式 bash script-name 或sh script-name推荐使用 脚本本身没有执行权限 及文件x位为- 号或者开头没有指定解释器,推荐 path/script-name或 ./script-name当前路径下执行脚本 需要先将脚本文件的权限改为可执行 chmod +x script-name 或chmod 755 script-name 推荐第一种代替 source script-name 或 . script-name #--注意. 点号 脚本当中加载另一个脚本时使用 ,会把父shell的运行传到子shell中来 例: cat test.sh -- echo I am weige cat test.sh 1)sh test.sh bash test.sh 2)./test.sh ? chmod 755 test.sh ? ./test.sh 3)source test.sh . test.sh 例:验证第三种方法用途: echo userdir=`pwd` testsource.sh cat testsource.sh sh testsource.sh echo $userdir . testsource.sh echo $userdir #当前的窗口是一个shell,脚本又是另外一个shell,第一二种方法不会把定义传到当前shell命令行 # 用.号加载,就可以把定义传到当前shell命令行当中来,所以就可以echo Shell脚本开发基本规范和习惯 开头指定脚本解释器 1.#!/bin/bash 或#!/bin/sh 开头加载版本版权等信息 可配置vim编辑文件时自动加上以上信息,方法是修改~./vimrc配置文件 2.脚本中尽量不要用中文注释 3.脚本已.sh为扩展名 例:script-name.sh 4.代码书写优秀习惯:成对内容一次书写 【[] {} “” ‘’ ``】 [ ]括号两端要有空格 流程控制语句一次书写完成 如if/for 语句格式一次写完,在书写内容 if 条件内容 for Then 内容 do 内容 Fi done 通过缩进让代码更易读 变量基础及深入 环境变量 (全局变量) 局部变量 常见环境变量: $PATH:决定了shell将到哪些目录中寻找命令或程序$PATH:决定了shell将到哪些目录中寻找命令或程序$HOME:当前用户主目录$MAIL:是指当前用户的邮件存放目录.$SHELL:是指当前用户用的是哪种Shell. $HISTSIZE:是指保存历史命令记录的条数$LOGNAME:是指当前用户的登录名. $HOSTNAME:是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的. $LANG/LANGUGE:是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量.$PS1:是基本提示符,对于root用户是#,对于普通用户是$,也可以使用一些更复杂的值.$PS2:是附属提示符,默认是“”.可以通过修改此环境变量来修改当前的命令符,比如下列命令会将提示符修改成字符串“Hello,My NewPrompt :) ”. $IFS:输入域分隔符.当shell读取输入时,用来分隔单词的一组字符,它们通常是空格、制表符和换行符.$0:shell脚本的名字.   例如,在我的Linux系统中:     $ echo $0     /bin/bash$#: 传递给脚本的参数个数. $$:shell脚本的进程号,脚本程序通常会用它生成一个唯一的临时文件,如/tmp/tmfile_$$     例如,在我的Linux系统中:     $

文档评论(0)

1亿VIP精品文档

相关文档