写 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 非空串
在这有个比较郁闷的地方 (
由)
有那个 能帮我下 if and 使用
比如:
if [ -z ] && [ -z ]; then echo 11; else echo 22; fi;
结果 11 (正确)
if [ -n 1 ] && [ -n ]; then echo 11; else echo 22; fi;
结果 11 (错误)
这是 不能理解的 地方,
if [ -n 1 ] && [ -n '' ]; then echo 11; else echo 22; fi;
或
if [ -n 1 ] && [ -n "" ]; then echo 11; else echo 22; fi;
结果 22 (正确)
应该是 22 但结果是 11 郁闷!!
整理 www.blogjava.net/Good-Game