`

B Shell编程系列----脚本命令解析查询

阅读更多


转自:http://blog.csdn.net/s_k_yliu/article/details/7462982

http://blog.163.com/jk_new/blog/static/995485622010140363651/

Linux命令简单使用查询:  注意Shell中一些格式很重要,有些地方必须要加空格,否则无效!!!如if [   ],while [  ]  等

chmod --------修改文件的执行权限,

 chmod  u+x     filename    只有自己可以执行,其它人不能执行     chmod 700 filename
chmod  ug+x     filename   只有自己以及同一群可以执行,其它人不能执行  chmod 770 filename
chmod  +x        filename 所有人都可以执行   chmod 777 filename

echo ---------输出变量名或者信息

echo   name   -----------输出结果,屏幕上显示name

name=TOM

echo  $name    ----------输出结果,屏幕上显示TOM ,name经过上面的赋值

如果赋值的是系统环境变量,那么要加上export 变量,例如export VE_BASE=/usr/local/arm/..    ,可以添加到脚本

/root/.bashrc中 ,使用source .bashrc命令更新系统环境变量。

一些特殊的系统变量

$0 -------------当前执行执行程序的名字,本身,但是并不是唯一的,因为脚本里面也可以包含另外的执行脚本。

$n -------------当前执行程序的第n个参数,注意:以空格为分隔符。

(其实上面的很好理解,echo $0表示输出当前执行程序的名字,echo $1 当前执行程序后面的第一个参数,echo $2 .......)

$*  -------------这个程式的所有参数 
$#  -------------这个程式的参数个数 ,这个只是个int类型的计数值,计算一共有多少个参数
$$  -------------这个程式的PID  

$@ -------------为所有参数列表,返回所有参数
$!  -------------执行上一个背景指令的PID( ??? )
$?  -------------执行上一个指令的返回值(  ???)

http://lovingtree.blog.163.com/blog/static/144853420082204505348/

exec ----------执行另外的应用程序或者脚本,这个和直接运行不同的是,该命令会进入另外的脚本运行,并且直接关闭结束当前的脚本。

例如:#!/bin/sh

          echo name

          exec ./filename

          echo other testing

那么,很明显的,后面的other testing 就不会运行了。

pwd ------ 显示当前路径

expr ------将数值加1

例如: number=`expr $number+1`     ,表示将自己加1

test  -----------流程控制,条件判断式。当后面的判断为真时,返回非0,判断不为真,那么返回0,一般都是配合if --then ---else ----fi来使用

例如:name=jk

          if (test $name=jk)

          then    echo right $name

          else     echo not_right name

           fi

结果输出:right jk

 test 比较系列: 主要是用于if 的判断,很简单,如果test满足条件为真,if后面才是非零值,那么才执行then程序,否则执行else或不执行。

特殊变量参数:

test $#!=0      --------------比较当前的脚本所有参数是否为0,也即没有参数,那么(test  $#=0)就返回非零值,

数字比较:

$number=32

if( test  $number -eq 32)      ---------------表示数字相等为真,注意,-eq前后保持空格

 expression1 -eq expression2 相等 为真
expression1-ne  expression2 不等 为真
expression1 -gt expression2 前>后 为真  
expression1 -ge expression2 前>=后 为真
expression1-lt expression2 前<后 为真
expression1-le expression2 前<= 后为真

字符串比较:

if ( test  $string1 = $string2   )  --------------比较两个字符串是否相等,注意了,比较的两个字符串中间=号都要加上一个空格,否则比较无效,返回都是真。

同理: if(test $string1 != $string2  )    ------不等于才为真,注意‘=’号两边的空格一定要加上。

            if(test $string1 = "abc")    -----直接比较字符串

           if(test  -z $string    ) ------查看字符串长度是否为0

文件存在比较:

 if( test  -d  $filename)      --------------查看filename是存在的一个文件子目录为真

if(test -e  $filename)       ----------------查看filename文件存在为真

if(test -f file)       ----------------文件是普通文件为真
if(test -g file )       ----------------文件的set-group-id属性位被设置则为真
if(test -r file )       ----------------文件可读则为真
if(test -s file )       ----------------文件长度不为0则为真
if(test -u file )       ----------------文件的set-user-id属性位被设置则为真
if(test -w file )       ----------------文件可写则为真
if(test -x file )       ----------------文件可执行则为真

 for in 语法命令:

for   变量 in 循环给予变量 ;do   \

command(该命令中会包含了上面的变量)

done;

从上面可以看出:这句话的意思就是,for 后面跟了一个使用的变量, 该变量根据for循环,分别从in 后面的循环变量中获取变量,然后在do里面,将获取的变量一次执行某个命令,一直都循环给予变量结束;

举例:

for  testvar    in  aa bb cc dd ; do  \

echo $testvar 

done;

好,看到的结果就是:aa  bb  cc dd .

其中有个注意点:不要写成:for   testvar      

                                             in  aa bb cc dd; do \ 

                                            也即不要将for 和In隔行,一定要保证在同一行中才行,否则出错;

 while循环命令:

如同上面的for一样,while的格式如下:

while 条件表 
do 
命令表 
done 

条件表就是用到上面的test条件判断,和if一样,举例说明:

Sum=0 
i=0 


while true                      #true是系统的关键词 表示真 
do 
i=`expr $i + 1` 
Sum=`expr $Sum + $i` 
if [ $i = "100" ] 
then 
break; 
fi 
done                 --------这里到while结束
echo $i $Sum 

其实while部分可以改为:

while [ $i != "100" ] 
do 
i=`expr $i + 1` 
Sum=`expr $Sum + $i` 
done 

 case 命令

  

 read 命令:

 

 

 linux shell获取本机ip地址
(2009-02-12 09:57:11) 
B Shell编程系列----脚本命令解析查询 - jimk - jimk的博客 转载

var $tag='杂谈'; var $tag_code='b02ecd6f2bb60521b827eb9d873b00cd'; var $r_quote_bligid='4a4163880100cil2'; var $worldcup='0'; var $worldcupball='0'; 标签:
杂谈 分类:shell编程

获取本机ip地址地址,并保存到变量中

arg=`ifconfig eth0 |grep "inet addr"| cut -f 2 -d ":"|cut -f 1 -d " "`

ipaddr=$arg

echo $ipadd

来源:(http://blog.sina.com.cn/s/blog_4a4163880100cil2.html ) - linux shell获取本机ip地址_nike_新浪博客

 

cut参数简介

-d用来定义分隔符,默认为tab键,

-f表示需要取得哪个字段,2表示取得以-d指定的分隔符分割的第二个字段
当然也可以通过cut取得文件中每行中特定的几个字符,例如:
cut -c3-5 /etc/passwd
就是输出/etc/passwd文件中每行的第三到第五个字符。
-c 和 -f 参数可以跟以下子参数:
N 第N个字符或字段
N- 从第一个字符或字段到文件结束
N-M 从第N个到第M个字符或字段
-M 从第一个到第M个字符或字段

补充:

文件状态测试
-b filename : 当filename 存在并且是块文件时返回真(返回0)
-c filename : 当filename 存在并且是字符文件时返回真
-d pathname : 当pathname 存在并且是一个目录时返回真
-e pathname : 当由pathname 指定的文件或目录存在时返回真
-f filename : 当filename 存在并且是正规文件时返回真
-g pathname : 当由pathname 指定的文件或目录存在并且设置了SGID 位时返回真
-h filename : 当filename 存在并且是符号链接文件时返回真 (或 -L filename)
-k pathname : 当由pathname 指定的文件或目录存在并且设置了"粘滞"位时返回真
-p filename : 当filename 存在并且是命名管道时返回真
-r pathname : 当由pathname 指定的文件或目录存在并且可读时返回真
-s filename : 当filename 存在并且文件大小大于0 时返回真
-S filename : 当filename 存在并且是socket 时返回真
-t fd       : 当fd 是与终端设备相关联的文件描述符时返回真
-u pathname : 当由pathname 指定的文件或目录存在并且设置了SUID 位时返回真
-w pathname : 当由pathname 指定的文件或目录存在并且可写时返回真
-x pathname : 当由pathname 指定的文件或目录存在并且可执行时返回真
-O pathname : 当由pathname 存在并且被当前进程的有效用户id 的用户拥有时返回真(字母O 大写)
-G pathname : 当由pathname 存在并且属于当前进程的有效用户id 的用户的用户组时返回真
file1 -nt file2 : file1 比file2 新时返回真
file1 -ot file2 : file1 比file2 旧时返回真
举例: if [ -b /dev/hda ] ;then echo "yes" ;else echo "no";fi // 将打印 yes
test -c /dev/hda ; echo $? // 将打印 1 表示test 命令的返回值为1,/dev/hda 不是字符设备
[ -w /etc/passwd ]; echo $? // 查看对当前用户而言,passwd 文件是否可写
 
测试时逻辑操作符
-a 逻辑与,操作符两边均为真,结果为真,否则为假。
-o 逻辑或,操作符两边一边为真,结果为真,否则为假。
!  逻辑否,条件为假,结果为真。
举例: [ -w result.txt -a -w score.txt ] ;echo $? // 测试两个文件是否均可写
 
常见字符串测试
-z string    : 字符串string 为空串(长度为0)时返回真
-n string    : 字符串string 为非空串时返回真
str1 = str2  : 字符串str1 和字符串str2 相等时返回真
str1 != str2 : 字符串str1 和字符串str2 不相等时返回真
str1 < str2  : 按字典顺序排序,字符串str1 在字符串str2 之前
str1 > str2  : 按字典顺序排序,字符串str1 在字符串str2 之后
举例: name="zqf"; [ $name = "zqf" ];echo $? // 打印 0 表示变量name 的值和字符串"zqf"相等
 
常见数值测试
int1 -eq int2 : 如果int1 等于int2,则返回真
int1 -ne int2 : 如果int1 不等于int2,则返回真
int1 -lt int2 : 如果int1 小于int2,则返回真
int1 -le int2 : 如果int1 小于等于int2,则返回真
int1 -gt int2 : 如果int1 大于int2,则返回真
int1 -ge int2 : 如果int1 大于等于int2,则返回真
举例: x=1 ; [ $x -eq 1 ] ; echo $? // 将打印 0 表示变量x 的值等于数字1
x=a ; [ $x -eq "1" ] // shell 打印错误信息 [: a: integer expression expected

分享到:
评论

相关推荐

    SHELL编程---初学者

    - 脚本文件:SHELL脚本本质上是一个文本文件,包含一系列命令,可以被SHELL解释并执行。 - 执行权限:为了运行SHELL脚本,需要确保文件具有执行权限(`chmod +x script.sh`)。 - 文件头:通常在脚本开头写入`#!/...

    LINUX与UNIX SHELL编程指南--part1

    《LINUX与UNIX SHELL编程指南--part1》是一本深度解析Linux和Shell编程的教程,涵盖了从基础到进阶的广泛内容。本部分包含了前17章的学习资料,为读者提供了一个全面的起点,深入理解这两种操作系统的核心编程概念。...

    shell编程--用户信息管理(模拟).doc

    shell编程在Linux操作系统中扮演着重要角色,它是一种解释型的脚本语言,常用于自动化任务和系统管理。在这个课程设计中,学生被要求模拟用户信息管理,这涉及到对Linux系统中shell脚本编程技术的深入理解和应用。 ...

    LINUX与UNIX SHELL编程指南-2

    《LINUX与UNIX SHELL编程指南》是一本深入解析Linux和Unix Shell编程的权威书籍,旨在帮助读者理解和掌握这两种操作系统中的Shell编程技术。Shell作为Linux和Unix系统中的命令解释器,是用户与操作系统交互的重要...

    shell编程指南-ABS

    《Shell编程指南—ABS》是一本深度探讨Bash脚本编程的艺术与技术的书籍,适合初学者至中高级用户学习和提升。Bash,即Bourne Again Shell,是当前Unix/Linux环境中最为流行且功能强大的shell之一。由于其广泛的应用...

    LINUX与UNIX SHELL编程指南-2.rar

    《LINUX与UNIX SHELL编程指南》是一本深入讲解Linux和Unix系统中Shell编程的权威教程。Shell作为操作系统与用户交互的重要工具,是系统管理员和程序员日常工作中不可或缺的一部分。本书旨在帮助读者掌握Shell脚本...

    Shell编程中文手册.pdf

    本手册涵盖了 Shell 编程的基础知识,包括 Shell 概述、Shell 解析器、Shell 脚本入门、Shell 中的变量等。 Shell 概述 Shell 是一种命令行接口,允许用户与操作系统进行交互。学习 Shell 编程可以让开发者更好地...

    shell编程-监控硬盘使用率脚本

    ### Shell编程:监控硬盘使用率脚本 #### 知识点概述 本文将详细介绍一个用于监控服务器硬盘使用率并通过短信或邮件发送报警信息的Shell脚本。该脚本通过解析`df -h`命令的输出来获取各分区的使用情况,并根据使用...

    shell脚本合集--大量注释

    通过阅读和分析脚本,可以提升Shell编程技巧,理解常用服务的部署流程。 总之,"shell脚本合集--大量注释"是一个实用的工具集,无论你是运维新手还是经验丰富的专业人士,都能从中受益。通过学习和使用这些脚本,你...

    Linux命令行与shell脚本编程 - mysql数据库操作案例

    在IT领域,Linux命令行和Shell脚本编程是日常运维和开发工作中不可或缺的技能。Linux命令行提供了一种高效、直接的方式来与操作系统交互,而Shell脚本则允许我们编写自动化任务,大大提高了工作效率。在这个“Linux...

    一个批量域名解析的Shell脚本例子

    标题中的“一个批量域名解析的Shell脚本例子”是指通过Shell脚本来实现对大量域名进行DNS解析的功能。在IT行业中,这种操作常用于网络监控、安全分析或数据收集等场景。下面将详细介绍这个主题。 首先,`...

    Shell脚本编程详解

    ### Shell脚本编程详解 #### 一、Shell脚本编程基础 **1.1 Shell命令行的运行** Shell脚本的基础在于理解如何在命令行环境中运行Shell命令。Shell是一种用于与操作系统交互的语言,它允许用户通过命令行界面执行...

    shell编程和unix命令

    Shell编程和Unix命令是Linux和Unix操作系统中至关重要的部分,它们构成了系统管理和自动化任务的核心工具。Shell是一种命令行解释器,允许用户通过文本输入来执行系统操作,而Unix命令则是预定义的一系列程序,用于...

    Go-sh-一个shell解析器和格式化程序

    `Go-sh`是一个用Go语言编写的库,它提供了对Shell语法的解析和格式化功能,极大地帮助开发者在Go程序中集成Shell脚本处理能力。 **1. Go语言的优势** Go(Golang)是Google开发的一种静态类型、编译型的编程语言,...

    《Shell脚本编程》-(2)PPT课件.ppt

    8. **支持Shell编程**:包括循环、条件语句、函数等编程结构。 **常见Shell命令** 1. **文件安全与权限**:使用`chmod`命令修改文件权限,如`chmod u+x file1`为文件添加执行权限。权限位包括读(r)、写(w)、...

    Linux Shell编程&常用shell命令

    Linux Shell编程与常用Shell命令是Linux系统管理及自动化工作中的核心技能。Shell是Linux操作系统下的一种命令行解释器,它提供了用户与操作系统内核交互的界面。通过编写Shell脚本,用户可以自动化执行一系列任务,...

    [Linux]Shell脚本编程详解

    在Linux操作系统中,Shell脚本是一种强大的自动化工具,它允许用户通过编写一系列命令来执行复杂的任务。这篇文章将深入探讨Shell脚本编程的基础知识,包括语法、常用命令以及如何创建和运行自定义脚本。 1. Shell...

Global site tag (gtag.js) - Google Analytics