什么是Shell:Shell是一个命令解释器。

Linux下支持shell的种类:

1、  Bourne Shell(简称sh)

2、C Shell(简称csh)

3、Korn Shell(简称ksh)

4、Bourne Again Shell(简称bash)

Bourne Shell有4种变量:

1、  用户自定义变量:

格式:变量名=值(等号两边不能有空格,亲测)

引用变量:$变量名

举例:VAR=”Hello Shell”

Echo $VAR

注意:当变量名与其他文字混淆时,使用${变量名}格式引用变量。

2、  位置参数即命令行参数:

由系统提供的参数称为位置参数,如:$0表示程序的名字,$1表示传递给程序的第一个参数,以此类推。

3、  预定义变量

预定义变量在Shell一开始就定义了的变量,有所不同的是,用户只能根据Shell的定义来使用这些变量,而不能重定义它。

$#:包含命令行参数个数

$@:包含所有命令行参数:“$1,$2...$9”

$?:包含前一个命令的退出状态,正常退出返回0,反之为非0值。

$*:包含所有命令行参数:“$1,$2...$9”

$$:包含正在执行进程ID号

4、  环境变量

echo:显示指定环境变量

export:设置新的环境变量

env:显示所有环境变量

set:显示所有本地定义的Shell变量

unset:清除环境变量

示例:设置一个新的环境变量,设置export Hello=”Hello!”,显示echo $Hello。

Shell程序和语句

Shell语句包括3类:说明性语句、功能性语句和结构性语句。

说明性语句:以#开始到改行结束,不被解释执行。

功能性语句:任意的shell命令、用户程序或其他shell程序。

结构性语句:条件测试语句、多路分支语句、循环语句、循环控制语句等。

一、功能性语句:

1、  键盘读入变量值:read 变量,如:

#!/bin/bash

echo please enter a string

read STRING

echo you enter string is $STRING

2、  算术运算命令

算术运算命令expr主要用于进行简单的整数运算,包括+(加)、-(减)、\*(乘)、/(整除)、%(求模)等操作。

#!/bin/bash

echo input two numbers

read a b

mul=`expr $a \* $b`

echo $a \* $b = $mul

注意:表达式z=`expr $x + $y`中的符号”`”为键盘左上角的反引号键。

3、  test命令

test语句可以测试3种对象:字符串、整数、文件属性。

a)       字符串测试:

s1 = s2    测试两个字符串的内容是否完全一样

s1 != s2   测试两个字符串的内容是否有差异

-z s1      测试s1字符串长度是否为0

-n s1      测试s1字符串长度是否不为0

测试字符串是否相等:

#!/bin/bash

read s1 s2

[ $s1 = $s2 ]

echo $?

注意:“[”后面和“]”前面及等号“=”的前后都应有一个空格。[]同为test命令。

测试字符串长度:

#!/bin/bash

read ss

[ -n $ss ]

echo $?

注意:1为长度小于等于零,0为长度大于零。

a – eq b 测试a与b是否相等

a – ne b测试a与b是否不相等

a – gt b 测试a是否大于b

a – ge b 测试a是否大于等于b

a – lt b 测试a是否小于b

a – le b 测试a是否小于等于b

#!/bin/bash

read x y

if test $x -eq $y

then

echo $x=$y

else

echo $x!=$y

fi

文件测试:

-d name  测试name是否为一个目录

-f name  测试name是否为普通文件

-L name  测试name是否为符号链接

#!/bin/bash

[ -d /home/azhe ]

echo $?

结果为1目录不存在,0表示目录存在。

4、  tput命令

tput命令主要用于设置终端工作模式:

bold 粗体字显示

rev 反白显示

sgr0 关闭所有属性

使用:tput rev

二、结构性语句

1、  条件测试语句

If 表达式

then 命令表

fi

另一种形式:

if 表达式

then 命令表1

else 命令表2

fi

2、  多路分支语句

多路分支语句case用于多重条件测试。

case 字符串变量 in    #case语句只能检测字符串变量

模式1)      #各模式中可用文件名元字符,以右括号结束

命令表1

;;    #命令表以单独的双分号行结束,退出case语句

模式2)

命令表2

;;

模式n)     #模式n常写为字符*,表示所有其他模式

命令表n

;;    #最后一个双分号可以省略

Esac

实例:

#!/bin/bash

if [ $# -eq 0 ]

then

echo no argument

exit

fi

case $1 in

file1)

echo file1

;;

file2)

echo file2

;;

*)

echo must select file1 or file2

;;

Esac

3、  循环语句

a)       for语句

for 变量名 in 单词表

do

命令表

done

变量依次取单词表中的各个单词,每取一次单词,就执行一次循环体中的命令。循环次数由单词表中的单词数确定。命令表中的命令可以是一条,也可以是由分号或换行符分开的多条。如果单词表中是命令上的所有位置参数时,可以在for语句中省略“in 单词表”部分。

实例:复制当前目录下所有的文件到/home/backup目录下。

#!/bin/bash

if [ ! -d /home/backup ]

then

mkdir /home/backup

fi

flist=`ls`

for file in $flist

do

if [ $# = 1 ]

then

if [ $1 = $file]

then

echo "$file found";exit

fi

else

cp $file /home/backup

echo "$file copied"

fi

done

echo ***backup completed***

b)       while循环语句

while 命令或表达式

do

命令表

done

4、  循环控制语句

Shell脚本中,循环控制语句有break和continue。break n表示跳出n层;continue语句表示马上转到最近一层循环语句的下一轮循环上,continue n则转到最近n层循环语句的下一轮循环上。

Shell函数

函数定义格式:

方式一:

function_name ( )

{

command1

...

commandn

}

方式二:

Function function_name ( )

{

command1

...

commandn

}

函数调用格式:

方式一:

value_name=`function_name [arg1 arg2 ...]`

方式二:

function_name [arg1 arg2 ...]

echo $?

实例:编写一个函数add求两个数的和。

#!/bin/bash

add()

{

a=$1

b=$2

z=`expr $a + $b`

return $z

}

add $1 $2

echo $?

Shell脚本调用

在shell脚本的执行过程中,支持调用另一个shell脚本,调用格式为:脚本名

实例:在test1.sh调用test2.sh。

#test1.sh脚本

#!/bin/bash

echo “The main name is $0”

./test2.sh

echo “The first string is $1”

#test2.sh脚本

#!/bin/bash

echo “How are you $USER?”

Linux Shell(初识)的更多相关文章

  1. 初识Linux shell

    目录 初识Linux shell Linux 深入探究Linux内核 系统内存管理 交换空间 页面 换出 软件程序管理 Linux中的进程 Linux系统的运行级 硬件设备管理 插入设备驱动代码的方法 ...

  2. Linux命令行–初识Linux shell

    shell及脚本简介  GNU/Linux shell 是个交互工具,它为用户提供了启动程序.管理文件系统上的文件以及管理运行在Linux系统上的进程的途径 . shell的核心是命令行提示符 它是s ...

  3. linux shell 脚本攻略学习20--awk命令入门详解

    awk生于1977年,创始人有三个,分别为 Alfred Aho,Peter Weinberger, 和 Brian Kernighan,名称源于三个创始人的姓的首字母. 作用:处理文本文件. awk ...

  4. Linux入门——初识Linux

    Linux入门——初识Linux 摘要:本文主要说明了Linux是什么,Linux发展历史,以及同Linux系统有关的一些基本知识. 简介 操作系统 Linux系统同Windows系统.Mac系统一样 ...

  5. 我们一起来学Shell - 初识shell

    文章目录 Shell 的分类 `bash` `csh` `ksh` `tcsh` `sh` `nologin` `zsh` Shell 能做什么 bash 环境变量文件 `/etc/profile` ...

  6. linux shell 中的sleep命令

    开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...

  7. Linux shell脚本编程(三)

    Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...

  8. Linux shell脚本编程(二)

    Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

  9. Linux shell脚本编程(一)

    Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...

  10. Linux Shell 流程控制语句

    * 本文主要介绍一些Linux Shell 常用的流程控制语句* 1. if 条件语句:if-then/if-elif-fi/if- else-fi if [条件判断逻辑1];then command ...

随机推荐

  1. ecstore生成二维码

    利用phpqrcode库生成二维码: /* *二维码添加 */ ////////////////////////////////////// /*引入文件*/ @include(APP_DIR.'/i ...

  2. 一个简单的redis调用类

    能只能判断函数的调用规则,容错规则, 例如set函数 set($key, $value, $time = false) 根据time的真假来判断是否使用set,或者是setex函数 get函数 get ...

  3. action找不到

    错误: {"name":"Not Found","message":"Unable to resolve the request: ...

  4. 继网易博客后搜狐博客也增加了nofollow标签

    继网易博客后搜狐博客也增加了nofollow标签 今天在搜狐博客发表了篇文章,在末端添加上我的版权,结果回头查看是发现,这个锚文本被加上了nofollow标签,也就是说这样的外链已经没有传递权重的作用 ...

  5. Http Authentication Java

    http://docs.oracle.com/javase/7/docs/technotes/guides/net/http-auth.html Http Authentication Overvie ...

  6. Linux企业级项目实践之网络爬虫(21)——扩展为多任务爬虫

    高效的网络爬虫是搜索引擎的重要基础.采用多任务并发执行,实现类似于CPU的流水线(pipeline)运行方式,可极大地提高网络和计算资源的利用率等性能. #include "threads. ...

  7. (一)一个简单的Web服务器

    万丈高楼平地起,首先我们必须了解 超文本传输协议(HTTP) 以后才能够比较清晰的明白web服务器是怎么回事. 1. 浅析Http协议 HTTP是一种协议,允许web服务器和浏览器通过互联网进行来发送 ...

  8. Centos中安装Sublime编辑器

    Centos中安装Sublime编辑器 1.从官网下载相应操作系统的下的安装包(http://www.sublimetext.com/2),这里下的是linux下的安装包 2.解压安装包,并将其放在/ ...

  9. jQuery 各种选择器 $.()用法

    jQuery 元素选择器jQuery 使用 CSS 选择器来选取 HTML 元素. $("p") 选取 <p> 元素. $("p.intro") 选 ...

  10. 再看ADO对象模型

    在敲学生管理系统之前,我们就学习过ADO的有关知识.但是昨天被问到ADO的几个对象,顿时无言!为什么会出现这样的结果呢,明明是学习过了,而且也实践过(红皮书的五个例子).这充分说明了,在以往的学习过程 ...