您的位置:首页 > 运维架构 > Shell

Bash shell脚本的语法结构

2015-10-14 10:41 537 查看
目的:自我整理,自我回顾,自我反省!
内容:干货!干货!!干货!!!
附加:不足之处希望大家指正,能给像我一样的菜鸟一点启发就最好啦。仅仅是启发。。。
感谢:感谢老男孩(老看您的博文和视频,O(∩_∩)O哈哈~),当然还有网上的各路技术大牛,参考书籍《UNIX shell》
Bash shell 脚本结构
#/bin/shshbang行,脚本解释器。
如:#/bin/csh,#/bin/awk...等
#注释。
如:This doc is writed chbo.
shell元字符或通配符
*,'',"",?,[],|,>,>>等
如:rm ./*
显示输出echo "Hello,Chbo."
局部变量var=value
var='value'
var="value1 value2"
---命令结果赋值给变量---
var=`cmd`
var=$(cmd)
环境变量---临时生效---
export var=value
var=value ;export var
---永久生效---
写入:/root/.bash_profile /root/.bashrc
常写入:/etc/profile
脚本目录:/etc/profile.d
查看变量echo $var_name
echo $PATH

特殊变量
$0 :打印自身
$n :${10}
$? :echo $? 判断命令执行结果
$# :传参个数
如:
[root@chboa 02]# cat 4.sh
[ $# -ne 2 ] && {
echo "must two"
exit 1
}
echo haha
传参---交互式---
[root@chbo ]# read -t 5 -p "pls input:" a
pls input:33
[root@chbo ]# echo $a
33
---非交互式---
var1=$1
var2=$2
算术运算1、((n=1+2))
2、n=`expr 5 + 9`
3、let n=1+2
4、n=`echo 3+3|bc`
5、n=$[2+3]

条件测试
方式一:test
方式二:[]
方式三:[[]]
---数值比较--------------------------------

-eq -ge -gt -le -lt -ne
如:[$1 -eq $2]
---字符串比较------------------------------
= !=
-n str1 检查str1的长度是否非0
-z str1 检查str1的长度是否为0
如:
[ "$str1" = "$str2" ]
[ -n "$str1" ]--->检查一个变量是否含有数据
注意:
1、加 “ ”
2、=两边必须有空格
---文件比较--------------------------------
-e
-d -f -r -w -x(excute) -s(size)
-nt (new than)
-O 检查文件是否存在并属于当前用户所有
-G 检查文件是否存在默认组与当前用户相同
例如:
[ -s $file ] 检查文件是否存在并非空
[ $file1 -nt $file2 ] 检查file1比file2新

条件语句if [ -f $file ]
then
echo 0
else
echo 1
fi
<===>
[ -f $file ]&&echo 0||echo 1
-------------------------------------------
if [ ]

then
statements
elif
then
statements
elif
then
statements
else
statements
if
-------------------------------------------
case var_name in

pattern1)
statements
;;
pattern2)
statements
;;
pattern3)
statements
;;
*)
default value
;;
esac

循环语句for n in `seq 10`
do
echo 10.0.0.$n
done
---------------------------
while [ ]
do
commands
done
----------------------------
until [ ]
do
commands
done
函数function name(){
指令
return n
}
执行:
先定义函数,才能调用

调用函数,直接写函数名

脚本的执行sh script_name

chmod +x path/script_name;path/script_name

source script_name或. script_name
(当前shell可调用脚本里的内容)

本文出自 “挨刀客” 博客,请务必保留此出处http://chboy.blog.51cto.com/9959876/1702751
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: