- 浏览: 391299 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (131)
- 云计算-基础概念 (1)
- 云计算-常见问题探讨 (1)
- 云计算-业界动态 (0)
- 云计算-技术探讨 (0)
- 云计算-技术人生存状态 (0)
- Linux学习 (30)
- javascript学习 (2)
- Maven 2学习 (4)
- Junit 4学习 (5)
- Hibernate学习 (3)
- 生活随想 (12)
- html相关 (4)
- Spring学习 (2)
- 数据库 (18)
- Flex学习 (1)
- Apache common 学习 (2)
- freemarker (1)
- Eclipse技巧 (6)
- Windows知识 (4)
- 励志 (2)
- 日志管理 (3)
- MyBatis (3)
- JDK学习 (3)
- Python学习 (4)
- ruby学习 (1)
- 排序算法 (1)
- 开源软件 (1)
- Git 版本管理 (2)
最新评论
-
dongwei_6688:
cooler1217 写道最近迷失了,所以来看看你和月哥的博客 ...
怀念对我影响很大的一位领导 -
cooler1217:
最近迷失了,所以来看看你和月哥的博客~~ 收获颇丰,你们都是我 ...
怀念对我影响很大的一位领导 -
javatozhang:
不错!很是受用!
集合操作的利器:CollectionUtils -
dongwei_6688:
gudupiao 写道如果比较的不是String 是 ob ...
集合操作的利器:CollectionUtils -
gudupiao:
如果比较的不是String 是 object 怎么办? ...
集合操作的利器:CollectionUtils
特殊的shell变量
变量 |
含义 |
$0 |
脚本名字 |
$1 |
位置参数 #1 |
$2 - $9 |
位置参数 #2 - #9 |
${10} |
位置参数 #10 |
$# |
位置参数的个数 |
"$*" |
所有的位置参数(作为单个字符串) * |
"$@" |
所有的位置参数(每个都作为独立的字符串) |
${#*} |
传递到脚本中的命令行参数的个数 |
${#@} |
传递到脚本中的命令行参数的个数 |
$? |
返回值 |
$$ |
脚本的进程ID(PID) |
$- |
传递到脚本中的标志(使用set) |
$_ |
之前命令的最后一个参数 |
$! |
运行在后台的最后一个作业的进程ID(PID) |
测试操作: 二元比较
操作 |
描述 |
----- |
操作 |
描述 |
算术比较 |
字符串比较 |
|||
-eq |
等于 |
= |
等于 |
|
-ne |
不等于 |
== |
等于 |
|
-lt |
小于 |
!= |
不等于 |
|
-le |
小于等于 |
\< |
小于 (ASCII) * |
|
-gt |
大于 |
\> |
大于 (ASCII) * |
|
-ge |
大于等于 |
-z |
字符串为空 |
|
算术比较 |
双括号(( ... ))结构 |
-n |
字符串不为空 |
|
> |
大于 |
|||
>= |
大于等于 |
|||
< |
小于 |
|||
<= |
小于等于 |
|
|
文件类型的测试操作
操作 |
测试条件 |
----- |
操作 |
测试条件 |
-e |
文件是否存在 |
-s |
文件大小不为0 |
|
-f |
是一个标准文件 |
-r |
文件具有读权限 |
|
-d |
是一个目录 |
-w |
文件具有写权限 |
|
-h |
文件是一个符号链接 |
-x |
文件具有执行权限 |
|
-L |
文件是一个符号链接 |
|||
-b |
文件是一个块设备 |
-g |
设置了sgid标记 |
|
-c |
文件是一个字符设备 |
-u |
设置了suid标记 |
|
-p |
文件是一个管道 |
-k |
设置了"粘贴位" |
|
-S |
文件是一个socket |
F1 -nt F2 |
文件F1比文件F2新 * |
|
-t |
文件与一个终端相关联 |
F1 -ot F2 |
文件F1比文件F2旧 * |
|
-N |
从这个文件最后一次被读取之后, 它被修改过 |
F1 -ef F2 |
文件F1和文件F2都是同一个文件的硬链接 * |
|
-O |
这个文件的宿主是你 |
|
|
|
-G |
文件的组id与你所属的组相同 |
|
|
|
! |
"非" (反转上边的测试结果) |
|
|
参数替换和扩展
表达式 |
含义 |
${var} |
变量var的值, 与$var相同 |
${var-DEFAULT} |
如果var没有被声明, 那么就以$DEFAULT作为其值 * |
${var:-DEFAULT} |
如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 * |
${var=DEFAULT} |
如果var没有被声明, 那么就以$DEFAULT作为其值 * |
${var:=DEFAULT} |
如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 * |
${var+OTHER} |
如果var声明了, 那么其值就是$OTHER, 否则就为null字符串 |
${var:+OTHER} |
如果var被设置了, 那么其值就是$OTHER, 否则就为null字符串 |
${var?ERR_MSG} |
如果var没被声明, 那么就打印$ERR_MSG * |
${var:?ERR_MSG} |
如果var没被设置, 那么就打印$ERR_MSG * |
${!varprefix*} |
匹配之前所有以varprefix开头进行声明的变量 |
${!varprefix@} |
匹配之前所有以varprefix开头进行声明的变量 |
* 当然, 如果变量var已经被设置的话, 那么其值就是$var.
字符串操作
表达式 |
含义 |
${#string} |
$string的长度 |
${string:position} |
在$string中, 从位置$position开始提取子串 |
${string:position:length} |
在$string中, 从位置$position开始提取长度为$length的子串 |
${string#substring} |
从变量$string的开头, 删除最短匹配$substring的子串 |
${string##substring} |
从变量$string的开头, 删除最长匹配$substring的子串 |
${string%substring} |
从变量$string的结尾, 删除最短匹配$substring的子串 |
${string%%substring} |
从变量$string的结尾, 删除最长匹配$substring的子串 |
${string/substring/replacement} |
使用$replacement, 来代替第一个匹配的$substring |
${string//substring/replacement} |
使用$replacement, 代替所有匹配的$substring |
${string/#substring/replacement} |
如果$string的前缀匹配$substring, 那么就用$replacement来代替匹配到的$substring |
${string/%substring/replacement} |
如果$string的后缀匹配$substring, 那么就用$replacement来代替匹配到的$substring |
expr match "$string" '$substring' |
匹配$string开头的$substring*的长度 |
expr "$string" : '$substring' |
匹配$string开头的$substring*的长度 |
expr index "$string" $substring |
在$string中匹配到的$substring的第一个字符出现的位置 |
expr substr $string $position $length |
在$string中从位置$position开始提取长度为$length的子串 |
expr match "$string" '\($substring\)' |
从$string的开头位置提取$substring* |
expr "$string" : '\($substring\)' |
从$string的开头位置提取$substring* |
expr match "$string" '.*\($substring\)' |
从$string的结尾提取$substring* |
expr "$string" : '.*\($substring\)' |
从$string的结尾提取$substring* |
* $substring是一个正则表达式.
一些结构的汇总
表达式 |
解释 |
中括号 |
|
if [ CONDITION ] |
测试结构 |
if [[ CONDITION ]] |
扩展的测试结构 |
Array[1]=element1 |
数组初始化 |
[a-z] |
正则表达式的字符范围 |
大括号 |
|
${variable} |
参数替换 |
${!variable} |
|
{ command1; command2; . . . commandN; } |
代码块 |
{string1,string2,string3,...} |
大括号扩展 |
圆括号 |
|
( command1; command2 ) |
子shell中执行的命令组 |
Array=(element1 element2 element3) |
数组初始化 |
result=$(COMMAND) |
在子shell中执行命令, 并将结果赋值给变量 |
>(COMMAND) |
|
<(COMMAND) |
进程替换 |
双圆括号 |
|
(( var = 78 )) |
整型运算 |
var=$(( 20 + 5 )) |
整型运算, 并将结果赋值给变量 |
引号 |
|
"$variable" |
"弱"引用 |
'string' |
"强"引用 |
后置引用 |
|
result=`COMMAND` |
在子shell中运行命令, 并将结果赋值给变量 |
发表评论
-
使用 tcpdump 抓包
2015-09-06 19:31 763sudo tcpdump -A -vvvv -i lo0 p ... -
命令行获取本机公网 IP 地址
2014-07-28 15:37 1104在命令行里运行如下命令: $ curl ifconfig. ... -
grep 目录级联查找
2014-03-12 10:08 3192在Mac或者Linux下使用grep进行文件 ... -
如何确认当前使用的Shell类型
2014-03-09 11:01 1280方法一: ps |grep $$|awk '{print ... -
linux 踢出在线用户
2012-12-28 18:16 2047两个步骤: 1.用w命令找到要踢出的用户,比如下面: ... -
管理用户分组的命令gpasswd
2012-10-26 11:40 1251NAME: gpasswd - administe ... -
shell脚本运行时报错误:/bin/bash^M: bad interpreter 的解决办法
2012-10-24 19:13 2886出现原因:windows上写的脚本,直接拷贝到linux系统上 ... -
Linux 软链接和硬链接
2012-10-22 13:57 14461.Linux链接概念Linux链接分两种,一种被称为硬链接( ... -
非常好的介绍:Linux定时执行工具cron
2012-07-17 19:26 1827Linux经过十多年的发展,很多用户都很了解Linux了,这里 ... -
Linux下使用rsync最快速删除海量文件的方法
2012-06-28 11:25 14501、先安装rsync:yum install rsync 2 ... -
vim 如何取消高亮 或取消选中状态
2012-03-23 15:22 5770命令:nohls -
shell数组小结
2012-02-28 13:51 2335数组的声明: 1)array[key]=value ... -
linux 限制或允许root通过ssh登录
2012-02-23 10:59 1417两步: 第一步,vim /etc/ssh/sshd_conf ... -
/etc/sysconfig/iptables 详解
2012-01-11 14:13 1022#头两行是注释说明 # Firewall configura ... -
关于用snmpwalk时报"Permission denied"错误的解决办法
2011-09-28 18:17 1392当运行snmpwalk命令时,如果出现类似提示信息 ... -
关于Tomcat的SSL操作
2011-08-18 19:59 964在线JKS合成工具: https://www.myssl.cn ... -
Apache2.2+mysql5+php5.3配置[转载]
2011-07-13 18:32 1491上次配了一次这样的环境,今天又配了一次,我靠,又浪费我几个小时 ... -
linux 忘记root密码的解决办法
2011-06-13 11:05 1160第一步:开机启动的时候按下'e'键.出现菜单'Red Hat ... -
Linux文件和目录的粘滞位(sticky bit)带来的困惑
2011-02-24 13:20 5826今天维护系统时 ... -
Linux下获取本机公网/外网IP
2010-09-16 15:24 1921运行该命令:curl http://members.3322. ...
相关推荐
shell编程指南shell编程指南shell编程指南shell编程指南shell编程指南shell编程指南shell编程指南shell编程指南
常用shell的用法,非常方便阅读shell脚本。
shell编程-shell编程-分支语句(1) shell编程-shell编程-分支语句(2) shell编程-shell编程-循环语句(1) shell编程-shell编程-循环语句(2) Linux的shell编程(一) Linux的shell编程(二) Linux的...
运维第一工具-shell编程,包含shell基本语法及常用shell 命令。
shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程shell 编程...
这是一套完整的Unix培训教材,包括Unix常用命令及SHELL编程基础与高级技巧,PDF格式,共30个文件。另有2个Word文档。包内文件清单如下: 01_Shell-文件安全与权限.PDF 02_Shell-使用find和xargs.PDF 03_Shell-...
shell编程shell编程shell编程shell编程
基本包含了Linux下Shell编程开发基础知识点相关练习代码,包含 awk.sh for.sh ip-get.sh read.sh tmp.sh calc.sh func.sh login.sh select.sh var.sh case.sh guess_data.sh nfs_install.sh shell-base.sh while.sh ...
这是一款linux的常用命令及shell编程
shell编程入门经典--LINUX与UNIX Shell编程指南 (中文pdf版)
shell编程题目练习,练习基本的shell编程,学习脚本语言,提高效率
13Linux下Shell编程之While case演练 14Linux下Shell编程之While case演练 15Shell编程之函数及脚本案例讲解 16Shell编程之函数及脚本案例讲解 17Linux下Shell编程FIND、SED命令实战 18Linux下Shell编程FIND、SED...
LINUX与UNIX SHELL编程指南
shell编程入门教程+shell脚本专家指南+UNIX.shell编程24小时教程
经典Linux和unix的Shell编程,按照模板练习即可快速提高。
shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人...
6本pdf及chm的shell 编程的书 6本pdf及chm的shell 编程的书 6本pdf及chm的shell 编程的书 6本pdf及chm的shell 编程的书 6本pdf及chm的shell 编程的书
第四部分 基础shell编程 第16章 shell脚本介绍 151 16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第17章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 ...
Shell编程Shell编程Shell编程Shell编程Shell编程Shell编程Shell编程Shell编程Shell编程Shell编程Shell编程
Linux与Unix shell编程指南(完整高清版)Linux与Unix shell编程指南(完整高清版)Linux与Unix shell编程指南(完整高清版)Linux与Unix shell编程指南(完整高清版)Linux与Unix shell编程指南(完整高清版)Linux...