shell脚本
ahaogege
这个作者很懒,什么都没留下…
展开
-
break和continue在循环中的使用
打印出1至9,但是不打印其中的4和6 这样写: #!/bin/bash a=0 max=9 echo "test continue" while [ "$a" -lt $max ] do let "a+=1" if [ "$a" -eq 4 ] || [ "$a" -eq 6 ] then continue fi echo "$a" done 输出原创 2012-04-29 16:41:29 · 245 阅读 · 0 评论 -
嵌套循环
模仿一个嵌套循环,看下输出,就知道嵌套循环的规律,一般程序中的循环都是这样,必须的。 #!/bin/bash outer=1 for i in 1 2 3 do echo "pass $outer in outer loop" inner=1 for i in 1 2 3 4 5 do echo "pass $inner in inner loop" let "inner+=1...原创 2012-04-19 21:01:27 · 110 阅读 · 0 评论 -
操作字符串命令(提取,消除,替换)
1.expr提取 格式: expr match "$string" '$substring' $substring 是一个正则表达式 expr "$string" : '$substring' $substring 是一个正则表达式 从字符串开始的位置匹配字符串的长度,也即是算出这些匹配的字符串长度 写了个脚本测试 stringZ=abcABC123ABCabc ...原创 2012-04-16 20:05:31 · 303 阅读 · 0 评论 -
参数替换
第一种参数替换 如脚本 #!/bin/bash you_id=${USER}-on-${HOSTNAME} echo $you_id my_id=$USER-on-$HOSTNAME echo $my_id echo ----------------------------------- echo ${USER-`who am i`} echo ${USERNAME-`who a...原创 2012-04-15 11:42:44 · 299 阅读 · 0 评论 -
特殊字符梳理
双引号"" 在一个双引号中直接使用变量名,一般都是没有问题的.双引号阻止了所有在引号中的特殊字符的 重新解释--包括变量名,但是$,`和\除外.保留$ ,作为特殊字符的意义,是为了能够在双 引号中也能够正常地引用变量("$var").这样在""中可以使用变量所表达的值 从上面的解释中,可以知道特殊字符除了$、`、\外都是不起作用的 #号 #号一般是一个注释,但在以下情况下属于...原创 2012-04-15 11:18:30 · 123 阅读 · 0 评论 -
eval命令的使用
eval eval arg1 [arg2] ... [argN] 将表达式中的参数,或者表达式列表,组合起来,并且评估它们.包含在表达式中的任何变量 都将被扩展.结果将会被转化到命令中.这对于从命令行或者脚本中产生代码是很有用的. 写了个脚本测试 #!/bin/bash y=`eval ls -l` echo "$y" echo "-------------------------...原创 2012-04-14 21:34:03 · 443 阅读 · 0 评论 -
远程登录机器重启某个应用
最近准备写一个脚本重启远程某个机器上的应用,尝试了几种方法 1.第一种方法: 首先设置一下使得ssh登录不需要密码 #!/bin/bash ssh root@192.168.161.5<<! cd /opt/NMS/server/bin nohup ./Server.sh >/dev/null & ! 这个方法会...原创 2012-04-14 21:24:01 · 177 阅读 · 0 评论 -
没事干,写了个核查数据的脚本
根据此业务数据核查的一些共性,写了个脚本,安排组员使用这个脚本核查的时候就不必要说一大堆,简单,方便。记录下。 #!/bin/bash E_BADARGS=67 if [[ $1 =~ [^0-9]+ ]]||[[ $1 -lt 1 ]]||[[ $1 -gt 14 ]] then echo "This \$1 parameters must be Interger(00-14).";e...原创 2012-08-05 17:14:30 · 473 阅读 · 0 评论 -
find命令中的mtime参数
要写一个定时删除log的日志,需要用到这个命令,记录下。 find命令的一个总结 -mtime n :n 为数字,意义为在 n 天之前的『一天之内』被更动过内容的文件; -mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件档名; -mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件档名。 这里 -mtime +n是不包...原创 2012-08-05 12:59:53 · 176 阅读 · 0 评论 -
shift的使用
使用shift来穿过所以的位置参数 #!/bin/bash #until [ -z $1 ] #do #echo -n "$1" #shift #done #echo #exit 0 echo $1 shift echo $1 [root@ahaogege haha]# ./4.7.sh 1 2 1 2 这个例子可以看出使用shift可以把最前的一个位置...原创 2012-04-08 10:49:51 · 101 阅读 · 0 评论 -
bash变量的类型
不像其他程序语言一样,Bash 并不对变量区分"类型".本质上,Bash 变量都是字符串. 但是依赖于上下文,Bash 也允许比较操作和算术操作.决定这些的关键因素就是,变量中的值 是否只有数字. bash-3.00# more int-or-string.sh #!/bin/bash a=2334 let "a += 1" echo "a=$a" echo b=${a/2...原创 2012-04-08 10:32:32 · 124 阅读 · 0 评论 -
变量赋值和替换
#!/bin/bash a=28 hello=$a echo hello echo $hello echo ${hello} echo "$hello" echo "${hello}" echo hello="a b c d" echo $hello echo "$hello" echo '$hello' echo hello= echo "\hell...原创 2012-04-08 02:14:01 · 220 阅读 · 0 评论 -
位置参数的使用
[size=large]$0, $1, $2,等等... 位置参数,从命令行传递给脚本,或者是传递给函数.或者赋职给一个变量. $# 命令行或者是位置参数的个数. $* 所有的位置参数,被作为一个单词. 注意:"$*"必须被""引用. $@ 与$*同义,但是每个参数都是一个独立的""引用字串,这就意味着参数被完整地传递, 并没有被解释和扩展.这也意味着,每个参数列表中...原创 2012-04-07 20:29:36 · 534 阅读 · 0 评论 -
for循环
[size=large]以一道练习题为例子 1.编写一个if命令的语句: 判断某个用户是否存在于/etc/passwd文件 如果存在打印输出Found $USER in the /etc/passwd 如果不存在打印no such user on my system 这里读取/etc/passwd文件,然后进行判断是否存在用户,这个文件里面肯定不止一个用户,那么就要进行循环读取了,要...原创 2012-04-07 13:44:27 · 120 阅读 · 0 评论 -
case的用法
这几天都在忙验收的事情,验收终于完了,也有时间写写博客。 今天因工作需要,改了个脚本,也学习到了shell脚本中的一个在代码块中依靠条件去决定程序的分支的语句。 [color=blue]case命令是一个多分支的if/else命令[/color] 这个语句的结构是这样的 case "$variable" in "$condition1") command... ;; "$condi...原创 2012-03-31 20:41:17 · 140 阅读 · 0 评论 -
传送文件到多个远程机器的脚本
写一个传送文件到远程机器的脚本 因为在进行升级操作的时候,一些应用的文件都需要替换,如果一个一个替换会很麻烦也很慢,所以有必要写个脚本进行传送。 因为这些应用在各个远程机器上的部署路径都是一样的,脚本就相对简单很多了。 ps:中式英文都是经过谷歌认证的 #!/bin/bash remote_ip="192.168.161.5 192.168.161.5" jar_dir="/opt/...原创 2012-05-01 23:48:21 · 170 阅读 · 0 评论 -
转义符
转义是一种引用单个字符的方法,一个具有特色含义的的字符前面加上一个转义符(\)就告诉shell这个字符失去了特殊的含义 对于特定的转义符 \n 意味着新的一行 \r 回车 \t tab 键 小游戏 #!/bin/bash var="'(]\\{}\$\"" echo $var ...原创 2014-03-27 22:20:01 · 133 阅读 · 0 评论