第 三 十 一 天: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 到目前为止的秒数
以上选项可以进行组合,如:
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里没有多行注释,只能每一行加一个#号。只能像这样:
如果在开发过程中,遇到大段的代码需要临时注释起来,过一会儿又取消注释,怎么办呢?
每一行加个#符号太费力了,可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果。
为追求这些荣誉而工作。 —— 法拉第
一: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 或 PM1.用法:
以上选项可以进行组合,如:
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 socket 初步
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- 基于 Linux 集群环境上 GPFS 的问题诊断
- 谁是桌面王者?Win PK Linux三大镇山之宝
- vivi下重新调整分区