Ubuntu系统的Shell命令及脚本编程.docx

上传人:b****6 文档编号:7257925 上传时间:2023-01-22 格式:DOCX 页数:13 大小:330.52KB
下载 相关 举报
Ubuntu系统的Shell命令及脚本编程.docx_第1页
第1页 / 共13页
Ubuntu系统的Shell命令及脚本编程.docx_第2页
第2页 / 共13页
Ubuntu系统的Shell命令及脚本编程.docx_第3页
第3页 / 共13页
Ubuntu系统的Shell命令及脚本编程.docx_第4页
第4页 / 共13页
Ubuntu系统的Shell命令及脚本编程.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

Ubuntu系统的Shell命令及脚本编程.docx

《Ubuntu系统的Shell命令及脚本编程.docx》由会员分享,可在线阅读,更多相关《Ubuntu系统的Shell命令及脚本编程.docx(13页珍藏版)》请在冰豆网上搜索。

Ubuntu系统的Shell命令及脚本编程.docx

Ubuntu系统的Shell命令及脚本编程

Ubuntu系统的Shell命令及脚本编程

Shell是Linux的命令解释器,是连接用户和内核的桥梁。

Linux命令通过Shell传给内核,内核执行命令并将结果返回给Shell,Shell再把结果输出到显示器或其他设备。

常用Shell有bash、csh、ksh,Ubuntu默认的Shell是bash。

一、变量与特殊字符

1)局部变量:

在设定此变量的Shell中有效

例1:

设定局部变量ylsy、显示变量值、取消变量。

zgj@wildgrass:

~$ylsy="YulinNormalUniversity"

zgj@wildgrass:

~$echo$ylsy

YulinNormalUniversity

zgj@wildgrass:

~$unsetylsy

2)环境变量:

在整个系统环境中有效

查看环境变量env

zgj@wildgrass:

~$env

常用环境变量说明:

SHELL=/bin/bash--当前使用的shell

USER=zgj--当前登录的用户名

PATH=/usr/lib/lightdm/lightdm:

/usr/local/sbin:

/usr/local/bin:

/usr/sbin:

/usr/bin:

/sbin:

/bin:

/usr/games--命令执行时的搜索路径

PWD=/home/zgj--当前工作目录

LANG=zh_CN.UTF-8--当前的语系

3)参数变量与特殊变量

Shell命令格式:

命令名[选项]参数1参数2...

参数变量的表示方法:

$0:

表示执行的程序名

$1-$9:

表示传给程序的第1个----第9个参数

${大于9的数字}:

表示第10个、11个参数...........

特殊变量的表示方法:

$#:

表示参数变量的个数

$*:

表示所有的参数变量

$@:

表示所有参数变量的值

$$:

当前Shell的PID(进程ID)值

$?

最近一个执行过的命令的返回值

例2:

编写脚本程序,测试参数变量与特殊变量的值

编写脚本程序myshell1.sh:

zgj@wildgrass:

~/UbunFiles$geditmyshell1.sh

echo$1$2

echo$0

#!

/bin/bash

echo$#

echo$@

echo$$

echo$?

执行脚本程序myshell1.sh:

zgj@wildgrass:

~/UbunFiles$./myshell1.shHelloBoysAndGirls

 

4)特殊字符

“”(双引号)中出现的[单引号、$、\]作为特殊字符

zgj@wildgrass:

~/UbunFiles$version="Ubuntu12.04LTS"

zgj@wildgrass:

~/UbunFiles$echo"versionis:

$version"

versionis:

Ubuntu12.04LTS

zgj@wildgrass:

~/UbunFiles$echo"versionis:

\$version"

versionis:

$version

zgj@wildgrass:

~/UbunFiles$echo"versionis:

'$version'"

versionis:

'Ubuntu12.04LTS'

二、通配符与正则表达式

1)?

匹配一个字符

2)*:

匹配多个字符

3)[]:

匹配[]里指定字符范围的任意一个字符

4)[!

]或[^]:

表示不匹配[]里指定字符范围的所有字符

例3:

显示以exp开头,第4个字符为数字[0-9],扩展名的第1个字符不是[r-z]、第2个字符不是o或x的所有文件和目录信息。

zgj@wildgrass:

~/UbunFiles$lsexp[0-9]*.[!

r-zR-Z][^oOxX]*

exp0.cpexp3.javaexp5.1psexp5a.cs

exp5b.jaexp7.cppexp8.dtexp9.cbp

5)正则表达式

grep[正则表达式]filename:

显示与[正则表达式]匹配的文件信息。

zgj@wildgrass:

~/UbunFiles$grep"Happy"*.*

myshell2.sh:

echo"HappySpringFestival!

"

myshell2.sh~:

echo"HappySpringFestival!

"

zgj@wildgrass:

~/UbunFiles$grep"排序"*.*

exp1.c:

printf("排序前:

");

exp1.c:

printf("\n排序后:

");

三、命令的执行顺序

1)cmd1&&cmd2&&cmd3&&...:

cmd1执行成功才执行cmd2,cmd2执行成功才执行cmd3...

zgj@wildgrass:

~/UbunFiles$mkdirtestcmd&&cdtestcmd&&pwd

/home/zgj/UbunFiles/testcmd

zgj@wildgrass:

~/UbunFiles/testcmd$

2)cmd1||cmd2||cmd3||...:

cmd1执行失败才执行cmd2,cmd2执行失败才执行cmd3...

zgj@wildgrass:

~/UbunFiles$mkdirtestcmd||cdtest||pwd

 

3)cmd1;cmd2;cmd3;...:

连续执行cmd1,cmd2,cmd3....

zgj@wildgrass:

~/UbunFiles$mkdirtestcmd;cdtestcmd;pwd

mkdir:

无法创建目录"testcmd":

文件已存在

/home/zgj/UbunFiles/testcmd

zgj@wildgrass:

~/UbunFiles/testcmd$

四、I/O重定向与管道

重定向

Linux使用0表示标准输入、1表示标准输出、2表示标准错误输出。

可以重新指定输入输出,<:

表示输入重定向;>(>>):

表示输出重定向。

zgj@wildgrass:

~/UbunFiles$ls-l>lsubu.txt

2>:

标准错误输出重定向

zgj@wildgrass:

~/UbunFiles$cdtest2>err.txt

zgj@wildgrass:

~/UbunFiles$caterr.txt

bash:

cd:

test:

没有那个文件或目录

管道(|)

一个命令的输出作为另一个命令的输入。

五、Shell脚本编程

1.Shell脚本程序的编写

1)脚本的第一行一般写上”#!

/bin/bash”,指明此脚本使用bash解释执行。

2)如果在一行之前使用了“#”字符,则该行是注释。

2.脚本程序的执行过程

1)编写脚本:

zgj@wildgrass:

~/UbunFiles$geditmyshell2.sh

2)默认的脚本程序权限为-rw-rw-r--,因此需要修改,添加“执行x”权限才能执行:

zgj@wildgrass:

~/UbunFiles$chmod755myshell2.sh

zgj@wildgrass:

~/UbunFiles$ls-lmyshell2.sh

-rwxr-xr-x1zgjzgj652月1620:

36myshell2.sh

3)执行Shell脚本程序

方法1:

zgj@wildgrass:

~/UbunFiles$./myshell2.sh

春节快乐!

HappySpringFestival!

方法2:

zgj@wildgrass:

~/UbunFiles$bashmyshell2.sh

春节快乐!

HappySpringFestival!

3.编写交互式脚本

read[-p“字符串”]变量名

例4:

编写一个简单的交互式脚本程序

zgj@wildgrass:

~/UbunFiles$geditmyshell2.sh

 

zgj@wildgrass:

~/UbunFiles$bashmyshell2.sh

 

4.在脚本中使用数值变量和数组

例5:

zgj@wildgrass:

~/UbunFiles$geditmyshell3.sh

 

zgj@wildgrass:

~/UbunFiles$bashmyshell3.sh

 

5.逻辑判断与逻辑表达式

格式一:

test条件

格式二:

[条件]

1)对字符串进行判断

[str1=str2]:

相等为真

[str1!

=str2]:

不相等为真

[-zstr]:

str长度为零则为真

[-nstr]:

str长度不为零则为真

注:

各选项之间用空格隔开

例6:

zgj@wildgrass:

~/UbunFiles$geditmyshell4.sh

 

zgj@wildgrass:

~/UbunFiles$./myshell4.sh

 

2)对整数进行判断

[int1-eqint2]:

相等为真

[int1-neint2]:

不相等为真

[int1-gtint2]:

int1>int2为真

[int1-geint2]:

int1>=int2为真

[int1-ltint2]:

int1

[int1-leint2]:

int1<=int2为真

注:

各选项之间用空格隔开

例7:

zgj@wildgrass:

~/UbunFiles$geditmyshell5.sh

 

 

zgj@wildgrass:

~/UbunFiles$bashmyshell5.sh

2013>2and2<=17

3)对文件的类型和属性进行判断

[-efile]:

file存在为真

[-ffile]:

file是一个普通文件为真

[-ddir]:

dir是一个目录为真

[-Lfile]:

file是一个链接文件为真

[-rfile]:

file可读为真

[-wfile]:

file可写为真

[-xfile]:

file可执行为真

注:

各选项之间用空格隔开

例8:

zgj@wildgrass:

~/UbunFiles$geditmyshell6.sh

 

zgj@wildgrass:

~/UbunFiles$./myshell6.shhello.javaLnkSoftwaremain.c

 

6.多分支条件语句case

格式:

case变量in

value1)

command1

;;

value2)

command2

;;

…...........

*)

commandn

;;

esac

注:

每个case语句块之后用;;结束

例9:

zgj@wildgrass:

~/UbunFiles$geditmyshell7.sh

 

zgj@wildgrass:

~/UbunFiles$shmyshell7.shmain.c

 

7.循环语句for、while、until

1)for语句

格式1:

for变量in变量值1变量值2…

do

command

done

格式2:

for((i=1;i<=100;i++))

do

command

done

注:

((与))不能用空格分开

例10:

zgj@wildgrass:

~/UbunFiles$geditmyshell8.sh

zgj@wildgrass:

~/UbunFiles$bashmyshell8.sh

 

2)while与until语句

格式:

while[条件]

do

command

done

注:

条件成立时循环执行command,break退出循环

until[条件]

do

command

done

注:

条件不成立时循环执行command,break退出循环

例11:

分别使用while、until循环计算1+2+...+100

zgj@wildgrass:

~/UbunFiles$geditmyshell9.sh

 

zgj@wildgrass:

~/UbunFiles$./myshell9.sh

1+2+...+100=5050

1+2+...+100=5050

 

例12:

输入一个算术表达式,输出表达式的结果

 

zgj@wildgrass:

~/UbunFiles$bashmyshell10.sh

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1