您的位置:首页 > 运维架构 > Shell

第 三 十 一 天:shell 脚 本(二)

2015-10-15 15:35 393 查看
小Q:我不能说我不珍重这些荣誉,并且我承认它很有价值,不过我却从来不曾
为追求这些荣誉而工作。 —— 法拉第

一:date命令
二:shell字符串
三:shell的三种引号
四:shell注释

一:date命令

date命令可以按照指定格式显示日期,只键入date则以默认格式显示当前时间



指定的格式显示日期,可以使用“+”连接以下字符:

#常用选项
%T : 直接显示时间 (24 小时制)
%H : 小时(00-23)
%M : 分钟(00-59)
%S : 秒(00-60)
%x : 直接显示日期 (mm/dd/yy)
%D : 直接显示日期 (mm/dd/yy)
%Y : 完整年份 (0000-9999)
%m : 月份 (01-12)
%d : 日 (01-31)
%a : 星期几 (Sun-Sat)
%W : 一年中的第几周 (00-53)
%Z : 显示时区
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
#不常用用选项
%n : 下一行
%t : 跳格
%c : 直接显示日期与时间
%X : 相当于 %H:%M:%S
%r : 直接显示时间 (12 小时制
%y : 年份的最后两位数字 (00.99)
%h : 同 %b
%b : 月份 (Jan-Dec)
%B : 月份 (January-December)
%j : 一年中的第几天 (001-366)
%U : 一年中的第几周 (00-53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0-6)
%A : 星期几 (Sunday-Saturday)
%I : 小时(01-12)
%k : 小时(0-23)
%l : 小时(1-12)
%p : 显示本地 AM 或 PM
1.用法:
以上选项可以进行组合,如:
date +"%Y-%m-%d %H-%M-%S" 因为有空格,所以需要引号

2.计算日期:
date -d "-2 days" +%F 输出现在的前第两天日期
date -d "-3 month" +%m 输出前第三个月的月份
date -d "+50 days" +%m 输出后第50天的月份

3.另一种表示方式:
date -d "-2 days ago" +%d 输出后第两天的日





=========================================================================================
二:shell字符串

下面的举例因为命令少可以写入脚本后执行,也可以在命令行输入以分号间隔;

举例:str="abc123abcABC"

1.计算字符串的长度
echo ${#str} #12

2.字符串截取

从左边开始
echo ${str#a*c} a到c的最短匹配
echo ${str##a*c} a到c的最长匹配
从右边开始
echo ${str%a*C} 从右边的最后字符开始寻找a到B的最短匹配
echo ${str%%a*B} 从右边最后字符开始寻找a到B的最长匹配
正向
echo ${str:2} 从第2个位置开始提取字符串的值
echo ${str:2:3} 从第2个位置开始提取长度为3个字符的值
反向提取
echo ${str:(-2)} 反向的第2个字符位置开始提取字符串
echo ${str:(-6):2} 反向的第6个位置提取长度为2个字符的串

3.位置参数的提取
echo ${*:2} 第二个参数开始提取后面所有位置参数的值
echo ${*:2:3} 从第二个参数开始提取3个位置参数的值

4.字符串拼接
your_name="qinjx"
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1

5.查找字符串
string="alibaba is a great company"
echo `expr index "$string" is`

========================================================================================
三:shell三种引号

单引号字符串的限制:
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
单引号字串中不能出现单引号(对单引号使用转义符后也不行)。

双引号的优点:
双引号里可以有变量
双引号里可以出现转义字符

反引号的作用:
反引号用来引用一条命令的结果;
比如,使用rpm -qf ,找一个命令是由哪个包安装的,rpm -qf `which vim` ,就可以了;
还有当我们给某个变量赋值时,也可以把一个命令的结果赋值给变量,比如 name=`hostname`

======================================================================
四:shell注释

以"#"开头的行就是注释,会被解释器忽略。
sh里没有多行注释,只能每一行加一个#号。只能像这样:
#--------------------------------------------
# 这是一个自动打ipa的脚本,基于webfrogs的ipa-build书写:
# https://github.com/webfrogs/xcode_shell/blob/master/ipa-build # 功能:自动为etao ios app打包,产出物为14个渠道的ipa包
# 特色:全自动打包,不需要输入任何参数
#--------------------------------------------
##### 用户配置区 开始 #####
#
#
# 项目根目录,推荐将此脚本放在项目的根目录,这里就不用改了
# 应用名,确保和Xcode里Product下的target_name.app名字一致
#
##### 用户配置区 结束  #####

##这样会被注释吗?


如果在开发过程中,遇到大段的代码需要临时注释起来,过一会儿又取消注释,怎么办呢?

每一行加个#符号太费力了,可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux