2014年9月8日星期一

[Linux]shell编程基础/linux基础入门 - Ron Ngai

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
[Linux]shell编程基础/linux基础入门 - Ron Ngai  阅读原文»

声明执行程序
#!/bin/bash

用来告诉系统使用/bin/bash 程序来执行该脚本。譬如python 脚本,可以这样写:

#!/usr/bin/python
赋值和引用

赋值公式:

变量名=值

取一个变量的值的时候,需要在变量名前面加上$ 符号,譬如:

var="hello bash"
echo $var

如果出现拼接,而且又没有空格为分隔符,这个时候就需要使用大括号将变量括住,如:

num=3
echo "this is the ${num}th"

其输出结果为:this is the 3th


shell默认下是进行字符串操作的。所以如果要计算的话就不能这么使用了

var=1
var
=$var+1
echo $var

其输出结果为:1+1

对于数值计算的话有下面的方法

var=1
let
"var+=1" # let表示数学运算
var
="$[$var+1]" # $[]表示对括号内的表达式进行数学运算,与(())感觉概念是一样的
((var
++))
var
=$(($var+1))
var
="$(expr "$var" + 1)" # expr表示整数运算
var
="`expr "$var" + 1`"
嫌太乱的话,建议记住(($var+1))就好了。只需要记住两个括号内的内容会进行计算就好了。
流程控制

if语句

if ...; then
...
elif ...; then
...
else
...
fi


一些常见的判断

[ -f "file_path" ] # 判断文件是否存在
[
-x "file_path" ] # 判断文件是否具有可执行权限
[
-n "$var" ] # 判断$var变量是否存在
[
"$var1" = "$var2" ] # 判断$var1和$var2是否相等

[]用来表示条件测试。注意空格,括号前后都需要空格。

&&和||
跟其它大部分语言一样,&&和||的意思都是差不多的。
&&:如果第一个条件为ture则检查第二个条件/执行第二条语句;
||:如果第一个条件为false则检查第二个条件/执行第二条语句;
所以就可以这么用了:

[ -r "${file_path}" ] || { echo "Cannot read ${file_path}";exit 1; }

意思是,如果文件不可读,则打印错误信息,并退出。

case语句
case是一个用来匹配字符串的表达式,不是数字哦。
case表达式

case ... in
...)
...;;
esac

例子

#!/bin/bash

case "$1" in
"1")
echo 1;;
"2")
echo "two";;
*)
echo "your input is $1";;
esac



循环
while表达式

while ...; do
...
done

for表达式

for var in ...; do
...
done

这两个表达式都比较简单,没啥需要特别说明的。我发现不同的系统之间有些差异。我发现红帽是可以使用下面的表达式的,但是Debian却不可以。不知道是系统版本引起还是系统本身存在差异的缘故,我没有深究这个。

for ((i=0;i++;i<10)); do
...

done
shell函数
function_name(){
#body of
function
}

函数无论对于任何语言来说都是需要最基本掌握的。Shell的函数只需要在调用之前定义就好了。跟C语言一样,但不需要声明,跟C语言还是有区别的。
Shell函数定义的时候不用写形参。调用的时候按照空格隔开多个参数传入就可以了。然后使用$1、$2、$3...这些参数来调用。
下面是一个简单的递归调用例子:

#!/bin/bash

recursion(){
PLSQL_PLSQL调优健康检查脚本SQLHC(案例)(通过运行脚本输出SQL Performance的HTML报表) - 东方瀚海  阅读原文»

【摘要】2014-08-23 BaoXinjian一、摘要网上流传的一个用以查询单一SQL查询的效率并导出为HTML报表的脚本,功能与DBMS_PROFILER类似通过session查询SQL_ID,只有运行脚本,导出为HTML报表该SQL脚本下载地址:http://files.cnblogs.com/ea... 阅读全文

阅读更多内容

没有评论:

发表评论