Chinaunix首页 | 论坛 | 博客
  • 博客访问: 289340
  • 博文数量: 111
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 816
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-04 20:35
文章分类

全部博文(111)

文章存档

2016年(1)

2015年(5)

2014年(105)

我的朋友

分类: LINUX

2014-05-24 23:20:07

一、编程习惯
1. 主要环境变量的宣告:PATH, LANG
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
2. exit 0(可作为错误码)
3. 在sh脚本前写一些注释是一个好的习惯

二、 ` ` $( ) ${ } expr $(( )) []
1. 所有UNIX命令,要取结果或输出,都要用$( )或反引号` `
$(ls -l)
tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print`
将过去24小时(-mtime –2则表示过去48小时)内修改过的文件tar在一起

2. ${i}是区分其后紧接的字符串,避免“连读
${i}可以在任何场合替代普通变量$i

3. expr   数学表达式
shell语言里没有运算公式,必须借助expr语句实现:
expr 变量 ‘+-x /’ 变量
expr $a '+' $b
 运算符号都要加引号,单引号双引号均可

为什么if expr 3 '+' 2 得5,但if仍走then ? 非0应该走else啊
因为expr表达式返回的是"返回值",不是"结果"

4. 另一种运算格式i++如何实现?------ i=$(($i+1))
(( ))与[ ]作用完全相同

i=$(($i+1))
i=$[$i+1]

三、script的执行方式
1. .和sh命令:子程序执行,新的进程(or线程)
2. source命令:父程序中执行,和父程序相同进程
3. test:像SQL中的SET NOEXEC ON
    可以部分的替代if
 4. []:和IF类似:[ "$name" == "VBird" ]; echo $?

四、参数
1.
$# :代表后接的参数『个数』,$0是脚本文件名;
$@ :代表『 "$1" "$2" "$3" "$4" 』之意,每个变量是独立的(用双引号括起来);相当于数组;没有参数为null
$* :代表『 "$1c$2c$3c$4" 』,其中 c 为分隔字符,默认为空格键, 所以本例中代表『 "$1 $2 $3 $4" 』,相当于字符串;没有参数就为空字符串

2. shift:造成参数变量偏移
   shift n(默认为1)


五、date
date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
  
  说明 :
  
  date 可以用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下 :
  
  时间方面 :
  
  % : 印出 %
  %n : 下一行
  %t : 跳格
  %H : 小时(00..23)
  %I : 小时(01..12)
  %k : 小时(0..23)
  %l : 小时(1..12)
  %M : 分钟(00..59)
  %p : 显示本地 AM 或 PM
  %r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
  %s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
  %S : 秒(00..61)
  %T : 直接显示时间 (24 小时制)
  %X : 相当于 %H:%M:%S
  %Z : 显示时区
  
  日期方面 :
  %a : 星期几 (Sun..Sat)
  %A : 星期几 (Sunday..Saturday)
  %b : 月份 (Jan..Dec)
  %B : 月份 (January..December)
  %c : 直接显示日期与时间
  %d : 日 (01..31)
  %D : 直接显示日期 (mm/dd/yy)
  %h : 同 %b
  %j : 一年中的第几天 (001..366)
  %m : 月份 (01..12)
  %U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
  %w : 一周中的第几天 (0..6)
  %W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
  %x : 直接显示日期 (mm/dd/yy)
  %y : 年份的最后两位数字 (00.99)
  %Y : 完整年份 (0000..9999)
  
  若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数
  参数 :
  
  -d datestr : 显示 datestr 中所设定的时间 (非系统时间)
  --help : 显示辅助讯息
  -s datestr : 将系统时间设为 datestr 中所设定的时间
  -u : 显示目前的格林威治时间
  --version : 显示版本编号
  
  例子 :
  显示时间后跳行,再显示目前日期 :
   date '+%T%n%D'
  
  显示月份与日数 :
   date '+%B %d'
  
  显示日期与设定时间(12:34:56) :
   date --date '12:34:56'

六、条件语句if ;then
1. if...;then...elif...;then...fi

if [ $a = $b ];then ——=和==等效
    echo "equal!"
else
    echo "not equal!"
fi

 七、case...esac
case $1 in
"hello")
 echo "Hello, how are you ?"
  ;;
"")
 echo "You MUST input parameters, ex> {$0 someword}"
  ;;
*) # 其实相当于default
 echo "Usage $0 {hello}"
  ;;
esac
阅读(746) | 评论(0) | 转发(0) |
0

上一篇:Linux的Shell(二)

下一篇:Shell Script(二)

给主人留下些什么吧!~~