Shell编程
当一个用户登录Linux系统之后,系统初始化程序init就为每一个用户运行一个称为shell(外壳)的程序。那么,shell是什么呢?确切一点说,shell就是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序。
本人目前对Shell还没有体会到方便之处,以后有了更深的体会再慢慢补充~
入门使用比较好的2个帖子:
http://www.cnblogs.com/xuqiang/archive/2011/04/27/2031034.html
http://www.cnblogs.com/feisky/archive/2010/03/31/1701560.html
bash通配符与特殊符号
http://www.cnblogs.com/ggjucheng/archive/2012/10/30/2746963.html
大多数情况下,可以使用测试命令--test命令来对条件进行测试,比如可以比较字符串、判断文件是否存在及是否可读等等……或者用" [ ] "来表示条件测试,注意这里的空格很重要,要确保方括号前后的空格。
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等
...
自己写的一个测试的例子:
<span style="font-size:14px;">#!/bin/bash
#定义变量不需要指定类型
msg="hello,world!"
# comment
if [ ${SHELL} = "/bin/bash" ]; then
echo "bash is fined!"
else
echo $msg
fi
#file.sh是当前目录一个文件
if [ -f "/file.sh" ];then
echo "it is a file"
#如果then写在下一行就不用打分号了
elif [ -x "file.sh" ];then
echo "executor file"
fi
echo "what is your favourite OS?"
#select语句比较适合交互的场合
select var in "linux" "windows" "OS"; do
case $var in
"linux")
echo "linux OS"
;;
"windows")
echo "windows OS"
;;
"OS")
echo "OS OS!"
;;
esac
break;
done
echo "you have select $var"
for ((i=0;i<=18;i++))
do
echo "world is $i"
done
for var in A B C; do
echo var is $var
done
#测试引号
mytestStr="test is test no reason!"
echo $SHELL
echo "$mytestStr"
echo '$SHELL'
function demo(){
echo "args are: $*"
echo "first arg is $1"
echo "second arg is $2"
echo "third arg is $3"
}
demo love foo bar
</span>
补充:
1.Shell脚本比较运算符及逻辑运算符小结
原文: http://www.linuxidc.com/Linux/2012-02/53148.htm
参考: http://www.cnblogs.com/chengmo/archive/2010/10/01/1839942.html
1、数值
格式:
test "num1" opr "num2"
[ "num1" opr "num2" ]
opr 取值:
相等:-eq
不等:-ne
大于:-gt
小于:-lt 【l是字母L的小写】
小于等于:-le
大于等于:-ge
2、字符串
格式:
[ str1 opr str2]
[ opr str ]
opr取值:
相等:=
不等:!=
空串:-z
非空串:-n
3、文件
格式:
[ opr file ]
opr取值:
目录: -d
文件: -f
链接: -L
可读: -r
可写: -w
可执行: -x
文件非空: -s
4、逻辑运算符
逻辑与: -a 格式: [ condition1 -a condition2 ]
逻辑或: -o 格式: [ condition1 -o condition2 ]
逻辑否: ! 格式: [ ! condition ]
2. 常用的脚本熟悉,知道和awk的用途结合/区别
脚本包括:网络检测的,文件管理的,一些应用服务器的配置管理 mysql tomcat..
shell脚本中一些特殊符号:
http://www.cnblogs.com/xuxm2007/archive/2011/10/20/2218846.html
各种括号:
http://blog.csdn.net/taiyang1987912/article/details/39551385
http://www.cnblogs.com/chengmo/archive/2010/10/19/1855577.html