什么是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. asp.net跨域上传文件

    前端: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" con ...

  2. 小巧实用的数字加减插件(jquery插件)

    2015-12-04 近期项目需要,我将插件更新了,增加了两个参数,一个参数控制文本框是否支持输入,另一个参数则是新增了一个回调函数,返回文本框内的值.另外对代码局部重构了,优化了一下封装,需要的朋友 ...

  3. Html5所见即所得的几款框架

    http://www.csdn.net/article/2013-10-21/2817243-8-useful-html5-frameworks

  4. test在博客中嵌入实例代码

        // 其实很简单,只要把css.div.js代码直接写在里面就可以了.通过查看源代码就能看得很清楚了. 要注意的一点就是:如果div里没有任何内容,则它会被(博客网)删除掉,所以即使没有内容, ...

  5. Python学习笔记总结(三)类

    一.类简单介绍 1.介绍 类是Python面向对象程序设计(OOP)的主要工具,类建立使用class语句,通过class定义的对象. 类和模块的差异,类是语句,模块是文件. 类和实例 实例:代表程序领 ...

  6. arm get_vector_swi_address

    unsigned long* get_vector_swi_addr() { const void *swi_addr = 0xFFFF0008; unsigned ; unsigned ; unsi ...

  7. ubuntu下安装phpstrom

    安装JAVA环境包1,下载 java 的 JDK 包,去官网下载(http://www.oracle.com/technetwork/java/javase/downloads/index.html) ...

  8. 基本套接字总结(@function)

    最近学习了下UNIX下的网络编程.为了以后查询方便,总结在这里. 首先套接字的地址定义: IPv4地址和IPv6地址定义见<netinet/in.h>头文件定义.为了能够顺利转换不同的套接 ...

  9. poj2752 Seek the Name, Seek the Fame

    Description The little cat is so famous, that many couples tramp over hill and dale to Byteland, and ...

  10. poj 1486 Sorting Slides(二分图匹配的查找应用)

    Description Professor Clumsey is going to give an important talk this afternoon. Unfortunately, he i ...