`

shell编程学习笔记二

 
阅读更多



流程控制


退出状态


有四种退出状态
最后命令退出状态$?
控制次序命令$$ ||
处理shell脚步本退出或shell退出及相就退出状态或函数返回码


退出当前进程
exit n
n为数字


流控制


if then else
格式为:
if 条件1
then 命令1
elif 条件2
then 命令2
else 命令3
fi




简单的if 语句
if条件
then 命令
fi


示例代码:测试1是否小于2
#!/bin/sh
#test
#测试1是否小于2
if [ "1" -lt "2" ]
then
#1小于2
echo "yes,1 is less than 2"
fi

修改文件权限
chmod u+x test
执行角本
[retacn@localhost tmp]$ ./test
yes,1 is less than 2


变量值测试


示例代码如下:用户键入return键后变量name是否包含信息
#!/bin/sh
#test2
#测试用户键入return键后name中是否包含信息
echo "Enter your name:"
read NAME
#
if [ "$NAME" = "" ]
then
echo "You must enter some information"
fi


运行角本:
[retacn@localhost tmp]$ ./test2
Enter your name:


You must enter some information




文件考贝输出检查
#!/bin/sh
#test3
#测试文件拷贝是否正常
if cp myfile myfile.bak
then
echo "copy success"
else
echo "`basename $0`:error could not copy the files" >&2
fi


执行结果:
[retacn@localhost tmp]$ ls
myfile1 test test2 test3
[retacn@localhost tmp]$ ./test3
cp: 无法 stat “myfile”: 没有那个文件或目录
test3:error could not copy the files

不输出系统错误信息
if cp myfile myfile.bak >/dev/null 2>
then ...




当前目录测试
示例代码如下:检查当前目录是否为根目录
#!/bin/sh
#test4
#检查当前目录是否是根目录
DIRECTORY=`pwd`
#
if [ "$DIRECTORY" != "/" ];then
#it is not the root directory,show the error message
echo "You need to be in the root directory not $DIRECTORY to run this
script" >&2
#退出返回错误值1
exit 1
fi


执行结果:
[retacn@localhost tmp]$ chmod u+x test4
[retacn@localhost tmp]$ ./test4
You need to be in the root directory not /home/retacn/tmp to run this
script


文件权限测试
示例代码如下:测试文件 test.txt是否被设置到LOGNAME
#!/bin/sh
#test5
#
LOGFILE=test.txt
echo $LOGFILE
if [ ! -w "#LOGFILE" ];then
echo "you can not write to $LOGFILE" >&2
fi


[retacn@localhost tmp]$ ./test5
test.txt
you can not write to test.txt




测试传递到角本中的参数


位置参数
$0 是角本的名称
$1 第一个参数
$2 第二个参数
以此类推
在$9之后的参数要用括号括起来,如${10}
$# 参数的个数
$* 和$@ 表示所有参数


示例代码如下
#!/bin/sh
#test5
#测试传入角本的参数个数
if [ $# -lt 3 ]; then
#小于三个参数
echo "usage: `basename $0`arg1 arg2 arg3" >&2
exit 1
fi
echo "arg1: $1"
echo "arg2: $2"
echo "arg3: $3"


执行结果
输入一个参数
[retacn@localhost tmp]$ ./test6 cup yue
usage: test6arg1 arg2 arg3


输入三个参数
[retacn@localhost tmp]$ ./test6 cup yue zhen hua
arg1: cup
arg2: yue
arg3: zhen


决定角本是否为交互模式
角本的运行
交互模式(终端模式)
非交互模式(cron或at)
示例代码如下:
#!/bin/sh
#test7
#检查角本是否是交互模式,返回1为交互
if [ -t ]; then
echo "we are interactive with terminal"
else
echo "we must be running from some background process probably
cron or at"
fi
执行结果:
[retacn@localhost tmp]$ ./test7
we are interactive with terminal






检测运行角本的用户
示例代码如下:
#!/bin/sh
#test8
#检测执行角本的用户
if [ "$LOGNAME" != "root" ]
then
echo "you need to root to run this script" >&2
exit 1
else
echo "yes indeed you are $LOGNAME proceed"
fi


执行结果
[retacn@localhost tmp]$ chmod u+x test8
[retacn@localhost tmp]$ ./test8
you need to root to run this script
[retacn@localhost tmp]$ su - root
口令:
[root@localhost ~]# cd /home/retacn/tmp/
[root@localhost tmp]# ./test8
yes indeed you are root proceed




将角本参数传入系统命令
#!/bin/sh
#test9
#传入系统命令
DIRECTORY=$1
if [ "`ls -A $DIRECTORY`" = "" ]; then
echo "$DIRECTORY is indeed empty"
else
echo "$DIRECTORY is not empty"
fi
执行结果:
[root@localhost tmp]# ls
myfile1 test2 test4 test6 test8 test.txt
test test3 test5 test7 test9
[root@localhost tmp]# ./test9 test.txt
test.txt is not empty


null:命令用法


示例代码
#!/bin/sh
#test9
#传入系统命令
DIRECTORY=$1
if [ "`ls -A $DIRECTORY`" = "" ]; then
echo "$DIRECTORY is indeed empty"
else :
fi




测试目录创建结果
示例代码如下:
#!/bin/sh
#test10
#测试目录创建目结果
DIRECTORY=$1
#检查字符串是否为空
if [ "$DIRECTORY" = "" ]
then
echo "usage:`basename $0` directory to create " >&2
fi
#如果目录已存在OB
if [ -d $DIRECTORY ]
then : #不做操作
else
#提示用户是否创建目录
echo "the directory does exist"
echo -n "create it now? [y..n]:"
read ANS
if [ "$ANS" = "y" ] || [ "$ANS" = "Y" ]
then
echo "creating now"
#创建目录
mkdir $DIRECTORY >/dev/null 2>&1
exit 1
#检测是否创建成功
if [ $? != 0]; then
echo "error creating the directory $DIRECTORY" >&2
exit 1
fi
else :
fi
fi




执行结果:


[root@localhost tmp]# chmod u+x test10
[root@localhost tmp]# ./test10
usage:test10 directory to create
[root@localhost tmp]# ./test10 temp
the directory does exist
create it now? [y..n]:y
creating now
[root@localhost tmp]# ls
myfile1 test test2 test4 test6 test8 test.txt
temp test10 test3 test5 test7 test9

分享到:
评论

相关推荐

    shell编程学习笔记

    变量: 变量的赋值和引用 在shell编程中变量没有类型,简称弱类型编程语言,不需要声明,在引用这个变量时会创建它(在变量名前加$符号引用变量的值)。在定义变量时,若String中包含空格、制表符、换行符,需用单...

    Linux Shell编程学习笔记

    Linux Shell编程学习笔记

    shell脚本编程学习笔记汇总

    shell脚本编程学习笔记汇总 本文档总结了 Linux shell 脚本编程的学习笔记,涵盖了 shell 脚本的定义、编写、权限、存放位置、函数、变量、IF 控制语句、命令退出状态等知识点。 一、shell脚本的定义 shell 脚本是...

    shell script编程学习笔记

    ### Shell Script 编程学习笔记 #### 一、Shell 脚本初窥 ##### 示例: ```bash #!/bin/sh # 第1行:指定脚本解释器(声明使用的shell名称),这里是用/bin/sh做解释器的。“#!”是一个约定的标记 cd ~ # 第2行:...

    Linux零基础学习笔记 Shell编程-菜鸟入门(超详细)

    Linux是开源的操作系统,它的命令行界面,尤其是Shell编程...因此,无论你是技术小白还是希望进一步提升,这份“Linux零基础学习笔记 Shell编程-菜鸟入门”都会是你宝贵的资源。祝你在学习的道路上越走越远,不断进步!

    shell编程教程.chm

    shell编程-shell编程-分支语句(2) shell编程-shell编程-循环语句(1) shell编程-shell编程-循环语句(2) Linux的shell编程(一) Linux的shell编程(二) Linux的shell编程(三) Linux的shell编程(四) ...

    Linux_shell编程学习笔记

    Linux Shell编程是Linux系统管理与自动化任务中的重要一环,主要通过编写脚本来实现对操作系统进行交互和控制。本文将详细解析Linux Shell编程中的几个关键概念:正则表达式、find命令、grep命令以及sed命令。 1. *...

    linuxshell编程学习笔记(5)shell运算符号和运算命令.pdf

    Linux Shell 编程学习笔记(5)Shell 运算符号和运算命令 本资源主要讲解了 Linux Shell 编程中的运算符号和运算命令,涵盖了基本的四则运算、自增自减运算、取余运算等多种运算符号和命令。下面是对该资源中涉及到...

    LINUX与UNIX_Shell编程指南V1.0_学习笔记.docx

    这份学习笔记将深入探讨Shell编程的基础,包括文件权限与安全,这是理解Linux和Unix系统管理的关键。 首先,我们关注文件权限。在Linux和Unix中,每个文件和目录都有三个基本的权限:读(r)、写(w)和执行(x)。...

    Linux服务器Shell编程学习笔记linux操作系统 电脑资料.docx

    在这个学习笔记中,我们将深入探讨如何编写和理解Shell脚本。 首先,Shell是Linux操作系统中的一个用户界面,它作为用户与操作系统内核交互的接口。常见的Shell类型有bash(Bourne-Again SHell)、sh(Bourne Shell...

    unix shell编程第三版笔记

    通过深入学习"Unix Shell编程第三版笔记",你将能够编写出高效的自动化脚本,提高工作效率,解决日常的系统管理和开发问题。同时,对Unix Shell的熟练掌握也是成为高级系统管理员或全栈开发者的必备技能之一。

    Linux服务器Shell编程学习笔记linux操作系统 电脑资料.pdf

    Linux服务器Shell编程是系统管理员和开发者在日常工作中必备的技能之一。Shell脚本是一种通过Shell解释器执行的文本文件,可以包含一系列命令,用于自动化任务和管理系统。在Linux操作系统中,常用的Shell包括bash、...

    shell编程笔记.zip_programy5v_shell_shell编程

    总之,“shell编程笔记.pdf”很可能包含了以上所有这些内容,是一个全面学习Shell编程的宝贵资源。通过深入学习和实践,你可以掌握Shell编程技能,从而更高效地管理和自动化你的Linux系统任务。

    Linux Shell编程笔记

    描述:这是一份综合的Linux Shell编程笔记,适用于想要学习或加强对Linux操作系统下Shell脚本编程的理解的人。该笔记包含了Shell脚本的基础知识、常用命令和技巧,以及实际的编程示例和案例。无论您是初学者还是有...

    linux与unix shell编程指南读书笔记.rar

    Linux与Unix Shell编程指南读书笔记提供了深入理解和熟练掌握Shell脚本编写技巧的宝贵资源。Shell是Linux和Unix操作系统中的命令解释器,它不仅用于交互式地执行命令,还能编写自动化任务的脚本,极大地提高了系统...

    Shell编程及自动化运维实现-第六章shell编程实战.学习笔记整理分享给需要的同学

    Shell编程及自动化运维实现-第六章shell编程实战.学习笔记整理分享给需要的同学

    「linuxshell编程学习笔记shell运算符号和运算命令」.docx

    在Linux Shell编程中,运算符号和运算命令是核心概念,用于执行数学计算和逻辑操作。以下是关于这些主题的详细说明: **一、Shell运算符号** 1. **加法 (+)**: 使用`expr`命令进行加法运算,例如 `expr 43 + 21` ...

Global site tag (gtag.js) - Google Analytics