shell基础学习总结(二) (r3笔记第72天)

作者: admin 分类: 公众号存档            1 次浏览 发布时间: 2014-12-02 23:12

公众号:杨建荣的学习笔记 · 作者:r3笔记第72天 · 发布:2014-12-02 23:12:35 · 原文链接

–>关于shell编程之文件比较
可以使用如下的选项来做文件的比较。有了这些选项,文件的比较来说都是游刃有余。
-d file file是否存在并是一个目录
-e file file是否存在
-f file file是否存在并是一个文件
-r file file是否存在并可读
-s file file是否存在并非空
-w file file是否存在并可写
-x file file是否存在并可执行
-O file file是否存在并属当前用户所有
-G file file是否存在并且默认组与当前用户相同
File1 –nt file2 file1是否比file2新
File1 –ot file2 file1是否比file2旧

–>双圆括号
关于双圆括号在shell中的使用,可是相当的广泛。以下的操作都会涉及到双圆括号。
Val ++,++val
Val –,–val
! 逻辑求反
~ 位求反
** 幂运算
<< 左位移
>> 右位移
& 位布尔和
| 位布尔减
&& 逻辑和
|| 逻辑减
举一个简单的例子来说明。
val1=10;

if (( val1 ** 2 > 90 ))
then
(( val2 = $val1**3 ))
echo $val2
fi

–>shell变成中的case
case语句的使用和在其它语言中的编程表达的是一个意思。
都是通过case 语句来把判断条件来逐步细分,得到与之最匹配的选项。case的使用也比较广泛,比如某一个命令可能含有很多的功能,就可以使用case来集多个功能于一身。
Case variable in
Parttern1|parttern2 ) commands;;
Pattern3) commands;;
*)default commands;;
esac

举一个使用case的例子。如果通过$USER得到的用户是ora10g或者oracle就输出this is the right user,如果是Testing,就输出this is a test user,如果是其它的用户则输出一段警告。
case $USER in
ora10g | oracle )
echo ‘this is the right user’
echo ‘glad to see you ‘;;
Testing)
echo ‘this is a test user’;;
*)
echo ‘sorry, you are not the expected user’;;
esac

->shell编程之函数
对于复杂的shell编程而言,肯定涉及的上下文环境会比较复杂,可能一个单独的shell文件就显得有些单薄了。如果有些功能在其它的脚本中也会涉及到,每次重复写就太无聊了。可以使用函数的功能,直接在使用的使用引用即可。
函数的语法如下。调用的时候也很方便。
function fname()
{
Statements;
}

fname()
{
Statements
}

fname ;
fname arg1 arg2

admin

杨建荣,《Oracle DBA工作笔记》《MySQL DBA工作笔记》作者,dbaplus社群发起人之一,腾讯云TVP,现任竞技世界系统部经理,拥有十多年数据库开发和运维经验,目前专注于开源技术、运维自动化和性能调优

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注