Linux基础入门及系统管理01-bash脚本编程之四文件测试及特殊变量19
2014-04-15 17:11
1006 查看
一、bash中常用的条件测试有三种
1、整数测试:-gt -le -ne -eq -ge -lt;
2、文件测试:
-e FILE:测试文件是否存在,如:[ -e /etc/inittab ]
-f FILE:测试文件是否为普通文件;
-d FILE:测试指定路径是否为目录;
-r FILE:测试当前用户对指定文件是否有读取权限;
-w FILE:测试当前用户对指定文件是否有可写权限;
-x FILE:测试当前用户对指定文件是否有可执行权限,如:[ -x /etc/rc.d/rc.sysinit ];
如:测试一个指定的文件是否存在;
# nano filetest.sh
#!/bin/bash
#
FILENAME=/etc/inittab
if [ -e $FILENAME ];then
echo "OK."
else
echo "Not the such file."
fi
# bash filetest.sh
OK.
二、测试脚本是否有语法错误
1、bash -n 脚本:脚本测试;
2、bash -x 脚本:单步执行脚本测试;
三、自定义脚本退出状态码
1、exit:退出脚本;
2、exit num:指定退出码,一般不指定0,因为执行命令正确才为0;
3、如果脚本没有明确定义退出状态码,那么,最后执行的一条命令的退出码即为脚本的退出状态码;
四、bash变量类型
1、本地变量(局部变量):作用域为当前shell进程;
2、环境变量:作用域为当前shell进程及其子shell进程;
3、位置变量:
a)$1,$2,...
如:./filetest.sh /etc/fstab /etc/inittab
$1:对应位置为./filetest.sh;
$2:对应位置为/etc/fstab;
b)shift:轮换参数(轮替);
c)shift n:轮替多个参数;
如:#nano shift.sh
#!/bin/bash
#
echo $1
shift
echo $1
shift
echo $1
#bash ./shift.sh 1 2 3 4
1
2
3
4、特殊变量
a)$?:上一条命令的退出状态码;
b)$#:参数的个数;
c)$*:参数列表;
d)$@:参数列表;
练习1,写一个脚本:
能接受一个参数(文件路径)
判断:此参数如果是一个存在的文件,就显示“OK”;否则就显示“No such file.”
参考答案:# nano filetest3.sh
#!/bin/bash
#
if [ $# -lt 1 ];then
echo "Usage:./filetest3.sh ARG1 [ARG2 ...] "
exit 7
fi
if [ -e $! ];then
echo "OK."
else
echo "No such file."
fi
# chmod +x ./filetest3.sh
# ./filetest3.sh /etc/fstab
OK.
# ./filetest3.sh /etc/fstavv
No such file.
练习2,写一个脚本:
给脚本传递两个参数(整数);显示此两者之和,之乘积;
参考答案:#nano cal.sh
#!/bin/bash
#
if [ $# -lt 2];then
echo "Least two ARG."
echo "The sum is:$[$1+$2]."
echo "The prod is:$[$1*$2]."
#bash cal.sh 6 9
The sum is:15.
The prod is:54. 。
本文出自 “Jessen Liu的博文” 博客,请务必保留此出处http://zkhylt.blog.51cto.com/3638719/1395912
1、整数测试:-gt -le -ne -eq -ge -lt;
2、文件测试:
-e FILE:测试文件是否存在,如:[ -e /etc/inittab ]
-f FILE:测试文件是否为普通文件;
-d FILE:测试指定路径是否为目录;
-r FILE:测试当前用户对指定文件是否有读取权限;
-w FILE:测试当前用户对指定文件是否有可写权限;
-x FILE:测试当前用户对指定文件是否有可执行权限,如:[ -x /etc/rc.d/rc.sysinit ];
如:测试一个指定的文件是否存在;
# nano filetest.sh
#!/bin/bash
#
FILENAME=/etc/inittab
if [ -e $FILENAME ];then
echo "OK."
else
echo "Not the such file."
fi
# bash filetest.sh
OK.
二、测试脚本是否有语法错误
1、bash -n 脚本:脚本测试;
2、bash -x 脚本:单步执行脚本测试;
三、自定义脚本退出状态码
1、exit:退出脚本;
2、exit num:指定退出码,一般不指定0,因为执行命令正确才为0;
3、如果脚本没有明确定义退出状态码,那么,最后执行的一条命令的退出码即为脚本的退出状态码;
四、bash变量类型
1、本地变量(局部变量):作用域为当前shell进程;
2、环境变量:作用域为当前shell进程及其子shell进程;
3、位置变量:
a)$1,$2,...
如:./filetest.sh /etc/fstab /etc/inittab
$1:对应位置为./filetest.sh;
$2:对应位置为/etc/fstab;
b)shift:轮换参数(轮替);
c)shift n:轮替多个参数;
如:#nano shift.sh
#!/bin/bash
#
echo $1
shift
echo $1
shift
echo $1
#bash ./shift.sh 1 2 3 4
1
2
3
4、特殊变量
a)$?:上一条命令的退出状态码;
b)$#:参数的个数;
c)$*:参数列表;
d)$@:参数列表;
练习1,写一个脚本:
能接受一个参数(文件路径)
判断:此参数如果是一个存在的文件,就显示“OK”;否则就显示“No such file.”
参考答案:# nano filetest3.sh
#!/bin/bash
#
if [ $# -lt 1 ];then
echo "Usage:./filetest3.sh ARG1 [ARG2 ...] "
exit 7
fi
if [ -e $! ];then
echo "OK."
else
echo "No such file."
fi
# chmod +x ./filetest3.sh
# ./filetest3.sh /etc/fstab
OK.
# ./filetest3.sh /etc/fstavv
No such file.
练习2,写一个脚本:
给脚本传递两个参数(整数);显示此两者之和,之乘积;
参考答案:#nano cal.sh
#!/bin/bash
#
if [ $# -lt 2];then
echo "Least two ARG."
echo "The sum is:$[$1+$2]."
echo "The prod is:$[$1*$2]."
#bash cal.sh 6 9
The sum is:15.
The prod is:54. 。
本文出自 “Jessen Liu的博文” 博客,请务必保留此出处http://zkhylt.blog.51cto.com/3638719/1395912
相关文章推荐
- Linux基础入门及系统管理01-bash脚本编程之一变量、变量类型等16
- Linux基础入门及系统管理01-bash脚本编程之三整数测试及算术运算18
- Linux基础入门及系统管理01-bash脚本编程之五字符串测试及for循环21
- Linux基础入门及系统管理01-bash脚本编程之二if等条件判断脚本知识17
- 第六课-第一讲06_01_bash脚本编程之四 整数测试及特殊变量
- Linux基础入门及系统管理01-Linux文件管理类命令详解08
- 2018-2-4Linux系统管理(5)bash脚本编程参数变量及条件判断
- Linux基础入门及系统管理01-Linux运维核心技能-bash基础特性详解09
- Linux基础入门及系统管理01-Linux文件管理命令详解07
- 6-1 bash脚本编程之四 整数测试及特殊变量
- bash脚本-表达式,&&,||,if,整数测试,let,文件测试,$特殊变量
- Linux基础入门及系统管理01-Shell三剑客之egrep及扩展正则表达式15
- 2016-3-6 linux基础学习13——条件判断、文件测试、bash变量类型
- Linux基础入门及系统管理01-Linux操作系统及常用命令04
- Linux入门基础 #5 Linux文件系统基本操作管理
- Linux基础入门及系统管理01-计算机原理01
- Linux基础入门及系统管理01-Linux根文件系统详解06
- Linux基础入门及系统管理01-Linux系统基础深入讲解02
- Linux基础入门及系统管理01-Shell三剑客之grep及正则表达式14
- linux笔记 第六天 bash编程入门之变量、条件判断、条件测试和for循环等