Skynet

---------- ---------- 我的新 blog : liukaiyi.cublog.cn ---------- ----------

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  112 Posts :: 1 Stories :: 49 Comments :: 0 Trackbacks

写 shell 使用 if  留个文
说明:
   下面可学习到
       1. 当 sh 文件接受到 2个,1个,或无参数时 解决办法(注意 $1 要 "$1" 这样使用 )
       2. sh 中 参数赋值 _var = $(...)
       3. 取得当前时间  $(date +%Y-%m-%d) 前天时间 $(date -d '-1 day' +%Y-%m-%d)

if [ -n "$2" ] ; then
     mydate
=$1
     _copyright
=/data/ftp_share/copyright/$2-copyright.000
     _walkman
=/data/ftp_share/copyright/$2-walkman.000
     _fullsong
=/data/ftp_share/copyright/$2-fullsong.000
     _shaker
=/data/ftp_share/copyright/$2-shaker.000
     _color
=/data/ftp_share/copyright/$2-color.000
elif  [ 
-n "$1" ]  ;then
  mydate
=$1
  _copyright
=$(python findIncBizDataFile.py copyright $1)
 _walkman
=$(python findIncBizDataFile.py  walkman $1)
 _fullsong
=$(python findIncBizDataFile.py  fullsong $1)
 _shaker
=$(python findIncBizDataFile.py  shaker $1)
 _color
=$(python findIncBizDataFile.py  color $1)    
else    
  
#ydate=$(date -d '-1 day' +%Y-%m-%d)
  mydate=$(date +%Y-%m-%d)
  _copyright
=$(python findIncBizDataFile.py copyright)
 _walkman
=$(python findIncBizDataFile.py walkman)
 _fullsong
=$(python findIncBizDataFile.py fullsong)
 _shaker
=$(python findIncBizDataFile.py shaker)
 _color
=$(python findIncBizDataFile.py color)
fi;





if 参数说明
  • –b 当file存在并且是块文件时返回真
  • -c 当file存在并且是字符文件时返回真
  • -d 当pathname存在并且是一个目录时返回真
  • -e 当pathname指定的文件或目录存在时返回真
  • -f 当file存在并且是正规文件时返回真
  • -g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真
  • -h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效
  • -k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真
  • -p 当file存在并且是命令管道时返回为真
  • -r 当由pathname指定的文件或目录存在并且可读时返回为真
  • -s 当file存在文件大小大于0时返回真
  • -u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真
  • -w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。
  • -o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。

UNIX Shell 里面比较字符写法:

  • -eq   等于
  • -ne    不等于
  • -gt    大于
  • -lt    小于
  • -le    小于等于
  • -ge   大于等于
  • -z    空串
  • =     两个字符相等
  • !=    两个字符不等
  • -n    非空串


在这有个比较郁闷的地方 (sunnycare指正,问题经过修改
  有那个 能帮我下 if and 使用
比如:
if [ -z ] && [ -z ]; then echo 11else echo 22; fi;
结果 
11 (正确)

if [ -1 ] && [ -n ]; then echo 11else echo 22; fi;
结果 
11 (错误)
这是 不能理解的 地方,

if [ -1 ] && [ -'' ]; then echo 11else echo 22; fi;

if [ -1 ] && [ -"" ]; then echo 11else echo 22; fi;
结果 
22 (正确)

应该是 22 但结果是 11 郁闷!!





整理 www.blogjava.net/Good-Game
posted on 2009-02-02 10:35 刘凯毅 阅读(5005) 评论(1)  编辑  收藏 所属分类: shell

Feedback

# re: shell if 使用 2009-02-02 12:47 sunnycare
应该是22!!!!

-z 1 => false
-z 2 => false
  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: