当前位置:首页 > shell高级编程之shell脚本执行与规范
实例:
#!/bin/bash #清除日志脚本 (#!又称为幻数) LOG_DIR=/var/log
ROOT_UID=0 #$UID为0的时候,用户才具有root用户的权限#要使用root用户来运行 if [ \then echo \ exit 1 fi
cd $LOG_DIR || { echo \ exit 1 }
查看默认 shell $SHELL grep root /etc/passwd
shell脚本运行时,先查找环境变量ENV ,该变量指定一个环境文件(通常为 .bashrc)
读取文件后开始执行脚本执行脚本的三种方式 1. bash script-name 或sh script-name推荐使用
脚本本身没有执行权限及文件x位为- 号或者开头没有指定解释器,推荐 2. path/script-name或 ./script-name当前路径下执行脚本
需要先将脚本文件的权限改为可执行chmod +x script-name 或chmod 755 script-name 推荐第一种代替
3. 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: $PATH: $HOME: $MAIL: $SHELL: $HISTSIZE: $LOGNAME: $HOSTNAME: 决定了shell将到哪些目录中寻找命令或程序 决定了shell将到哪些目录中寻找命令或程序 当前用户主目录 是指当前用户的邮件存放目录. 是指当前用户用的是哪种Shell. 是指保存历史命令记录的条数 是指当前用户的登录名. 是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的. 是基本提示符,对于root用户是#,对于普通用户是$,也可以使用一些更复杂的值. 是附属提示符,默认是“>”.可以通过修改此环境变量来修改当前的命令符,比如下列命令会将提示符修改成字符串“Hello,MyNewPrompt :) ”. 输入域分隔符.当shell读取输入时,用来分隔单词的一组字符,它们通常是空格、制表符和换行符. shell脚本的名字. 例如,在我的Linux系统中: $ echo $0 /bin/bash 传递给脚本的参数个数. shell脚本的进程号,脚本程序通常会用它生成一个唯一的临时文件,如/tmp/tmfile_$$ 例如,在我的Linux系统中: $ echo $$ 31038 #表示当前shell进程号为31038 $LANG/LANGUGE: 是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量. $PS1: $PS2: $IFS: $0: $#: $$: 设置环境变量的三种方法: 1、 export 变量名=value
export NAME=weige
2、 变量名=value;export变量名
NAME=weige; export NAME 3、declare –x 变量名=value
Declare –x NAME=weige
自定义环境变量生产环境Java环境配置实例:tomcat,resin.csvn,hadoop
用env(printenv)或set显示默认的环境变量
用unset消除本地变量和环境变量,临时生效
永久生效:写入配置文件 /etc/profile
局部变量: 字母,数字,下划线
1、 普通字符串变量定义
变量名=value
直接定义变量内容,内容一般为简单连续的数字、字符串和路径名 变量名=’value’
引号里面是什么就输出什么,即使内容包含变量也会把变量名原样输出,适合定义显示纯字符串 变量名=”value”
引号里面的内容会解析后输出该变量内容,适合语字符串中附带有变量的内容的定义
习惯:数字不加引号,其他默认加双引号
共分享92篇相关文档