目的:自我整理,自我回顾,自我反省!

内容:干货!干货!!干货!!!

附加:不足之处希望大家指正,能给像我一样的菜鸟一点启发就最好啦。仅仅是启发。。。

感谢:感谢老男孩(老看您的博文和视频,O(∩_∩)O哈哈~),当然还有网上的各路技术大牛,参考书籍《UNIX shell》

Bashshell 脚本结构

#/bin/sh

shbang行,脚本解释器。

如:#/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可调用脚本里的内容)