shell 基本应用及例子

shell  基本应用及例子

一、

$# 脚本的参数个数

$* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个

$$ 脚本运行的当前进程ID号

$! 后台运行的最后一个进程的进程ID号

[email protected] 与$*相同,但是使用时加引号,并在引号中返回每个参数

$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

$0 脚本名称

$1..$9 第N个参数

二、函数基本使用:

function functname{

shell commands

}

or

functname(){

shell commands

}

三、bash的算术运算比较运算符\字符串比较运算符\文件比较运算符:

煮酒品茶:这个是比较全的.查一般的,请点这里.

1、算术运算比较运算符(bash自身不能比较浮点数)

-eq 等于          [ $num1 -eq $num2 ]

-ne 不等于       [ 100   -ne $num1 ]

-lt 小于          [ 100   -lt `expr $num1 + $num2` ]

-le 小于或等于   [ 100   -le `expr $num1 \* $num2` ]

-gt 大于          [ 100   -gt `expr $num1 / $num2` ]

-ge 大于或等于   [ 100   -ge `expr $num1 % $num2` ]

2、字符串比较运算符

-z string  如果 string 长度为零,则为真 [ -z "`ps aux | grep mysql`" ]

-n string  如果 string 长度非零,则为真  [ -n "$string" ]

【注意】 $string 一定要放在双引号里面 "$string",否则使用 -n -z 的结果都为真!

string1 != string2  如果 string1 与 string2 不同,则为真  [ "$str1" != "Snail" ]

string1 == string2  如果 string1 与 string2 相同,则为真 [ "$str1" == "$str2" ]

(上面用一个 = 也可以,在严格的 POSIX 兼容下使用)

string1  string2   如果 string1 按字典顺序比较大于 string2,则为真

四、文件比较运算符

-a filename  如果 filename 存在,则为真                   [ -e $HOME/.bashrc ]

-e filename  (同上)

-d filename  如果 filename 存在,并且为目录,则为真       [ -d /home/snail ]

-f filename  如果 filename 存在,并且为常规文件,则为真   [ -f /dev/ttyS0 ]

-r filename  如果 filename 存在,并且可读,则为真         [ -r /etc/passwd ]

-u filename  如果 filename 存在,并且为set-user-id,为真  [ -f $HOME/ak47 ]

-w filename  如果 filename 存在,并且可写,则为真         [ -w /var/log/mail ]

-x filename  如果 filename 存在,并且可执行,则为真       [ -x ./start.sh ]

五、几个常用语法

while基本用法:

while [ condition ]

do

command1

command2

command3

done

#!/bin/bash

sudo find  -type f -name ‘*.log‘ |while read mvname

do

mv $mvname ${mvname/.log/.LOG}

done

#!/bin/bash

#查找当前目录下*.log并把值赋于mvname参与循环.

sudo find  -type f -name ‘*.log‘ |while read mvname

do

#移动,并把结尾的.log替换成.LOG /*Ubuntu 下好像不行*/

mv $mvname ${mvname/.log/.LOG}

done

例:上面是一例批量替换文件名的bash

简单PD文件类型,可按照上面文件类形表来写:

#!/bin/bash

if [ $# -ne 0 ]; then

if [ -d $1 ]; then

echo $1 is a Mulu

else

echo $0 D1 D2

fi

if [ -d $2 ]; then

echo $2 is a mulu

else

echo $0 D1 D2

fi

fi

#!/bin/bash

#如果个数不为空的话

if [ $# -ne 0 ]; then

#如果$1第一个参数是目录的话

if [ -d $1 ]; then

echo $1 is a Mulu

else

echo $0 D1 D2

fi

if [ -d $2 ]; then

echo $2 is a mulu

else

echo $0 D1 D2

fi

fi

程序只是例子,中间有很多BUG,例如如果有三个参数?

使之变成函数来表达:

#!/bin/bash

set -x

isd1(){

echo $0 D1 D2

}

if [ $# -eq 2 ]; then

if [ -d $1 ]; then

echo $1 is a Mulu

fi

if [ -d $2 ]; then

echo $2 is a mulu

fi

else

isd1

fi

计算数值变化:

[email protected]:/bash$ cat nubmer.sh

#!/bin/bash

a=1

b=2

echo $a+$b

echo $(($a+$b))

[email protected]:/bash$ sudo sh nubmer.sh

1+2

3

时间: 2024-10-09 23:01:23

shell 基本应用及例子的相关文章

HBase Shell 常用命令及例子

下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下: 名称 命令表达式 创建表 create '表名称', '列名称1','列名称2','列名称N' 添加记录       put '表名称', '行名称', '列名称:', '值' 查看记录 get '表名称', '行名称' 查看表中的记录总数 count  '表名称' 删除记录 delete  '表名' ,'行名称' , '列名称' 删除一张表 先要屏蔽该表,才能对该表进行删除,第一步 di

linux shell 快速入门小例子(shell十三问学习NOTE)

读CU论坛shell十三问后进行的几次小实验,备忘一下! SHELL十三问地址:http://bbs.chinaunix.net/thread-218853-1-1.html #!/bin/bash function func_com() { local a=1 local b="2c3" echo ${a}b echo $ab } function func_array() { echo "##### func_array #####" local PATH=&q

shell第四篇(下)

摘自王垠的:Unix的缺陷 我想通过这篇文章解释一下我对 Unix 哲学本质的理解.我虽然指出 Unix 的一个设计问题,但目的并不是打击人们对 Unix 的兴趣.虽然 Unix 在基础概念上有一个挺严重的问题,但是经过多年的发展之后,这个问题恐怕已经被各种别的因素所弥补(比如大量的人力).但是如果开始正视这个问题,我们也许就可以缓慢的改善系统的结构,从而使得它用起来更加高效,方便和安全,那又未尝不可.同时也希望这里对 Unix 命令本质的阐述能帮助人迅速的掌握 Unix,灵活的应用它的潜力,避

shell脚本的基础

shell脚本的基础 shell 基本语法 变量 什么是shell? 先看一个简单的shell程序 [[email protected]~]# cat linux.sh      #查看linux.sh文件内容#!/bin/bash echo -e "\e[1;31m linuxtouch  \e[0m"   #红色字体输出 linuxtouch[[email protected] ~]# sh linux.sh  linuxtouch  [[email protected] ~]#

如何在Linux终端里用Shell和C输出带颜色的文字

我们知道,使用ls命令列出文件列表时,不同的文件类型会用不同的颜色显示.那么如何实现这样带颜色的文本输出呢?答案并不复杂,不管是用shell还是C语言. 一.shell下的实现方法 先来讲在shell下,如何实现.用echo命令就可以实现,参看以下例子: echo  -e  "\033[32mHello, world!" 当你在终端里敲下这条命令后,是不是发现系统用绿色输出了"Hello,world!",不止如此,连之后的命令提示符都变成了绿色?不要着急,听我继续说

linux shell数组

from: http://www.jb51.net/article/34322.htm bash shell只支持一维数组,但参数个数没有限制. 声明一个数组:declare -a array(其实不用声明,按数组方式直接赋值给变量即可,BASH就知道那是数组) 数组赋值:(1) array=(var1 var2 var3 ... varN)(2) array=([0]=var1 [1]=var2 [2]=var3 ... [n]=varN)(3) array[0]=var1    arrya[

[转] Makefile中调用Shell

1.在Makefile中只能在target中调用Shell脚本,其他地方是不能输出的.比如如下代码就是没有任何输出: VAR="Hello" echo "$(VAR)" all: ..... 以上代码任何时候都不会输出,没有在target内,如果上述代码改为如下: VAR="Hello" all: echo "$(VAR)" ..... 以上代码,在make all的时候将会执行echo命令. 最后打印结果是: echo &q

makefile中的shell编程注意点

参考:http://blog.csdn.net/wanglang3081/article/details/49423105 (1)Makefile本质上来讲也是shell脚本,即每条command都是shell进程,运行完shell进程都会退出.   (2)shell代码行,如果有=的话,=两边不能有空格   (3)Makefile中的shell,每一行是一个进程,不同行之间变量值不能传递.所以,Makefile中的shell不管多长也要写在一行.可以用\来分行写,格式更清晰一点. SUBDIR

Hbase shell

HBase总结(十三)HBase Shell 常用命令及例子2014-10-13 11:30 3482人阅读 评论(0) 收藏 举报分类:Hbase(22) 版权声明:本文为博主原创文章,未经博主允许不得转载. 下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下: 名称    命令表达式创建表    create '表名称', '列名称1','列名称2','列名称N'添加记录          put '表名称', '行名称', '列名称:'