linux 编程例子,Linux之shell编程例子

一、编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息。

原文代码为:

Shell

1

2

3

4

5

6

7

8

9

10

#!/bin/bash

if

!

grep

"^#!"

$

1

&

>

/

dev

/

null

;

then

cat

>>

$

1

<<

EOF

#!/bin/bash

# Author:

#Date & Time: `date +"%F %T"`

#Description:

EOF

fi

vim

+

5

$

1

初学者看到这代码,可能不太会用,其实很简单,看到有 $1,就表示需要带参数来执行,所以,这个脚本的执行方法是:

①、将以上代码保存为 shell 脚本,比如 test,

②、使用 chmod 加上执行权限,chmod +x test

③、执行 ./test  newfile 即可看到效果。

Ps:当然也可以不要第②步,直接使用 sh test newfile 即可。

执行效果如下:

74bf6cbe7216c3f04ac7856ddae75559.png

这个脚本对于经常写 shell 的童鞋就很有用,但是忘记带参数执行就会卡住不动,而且不带路径的话就直接在当前目录下生成新文件,会很乱。所以张戈就将其改进一下,变得更加易用:

Shell

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#!/bin/bash

if

[

[

-

z

"$1"

]

]

;

then

newfile

=

~

/

newscript_

`

date

+

%

m

%

d_

%

S

`

else

newfile

=

$

1

fi

if

!

grep

"^#!"

$newfile

&

>

/

dev

/

null

;

then

cat

>>

$newfile

<<

EOF

#!/bin/bash

# Author: Inert Your Name here.

#Date & Time: `date +"%F %T"`

#Description: Please Edit here.

EOF

fi

vim

+

5

$newfile

改进说明:如果未带参数执行,将在家目录下生成带时间戳的新文件,避免重复及乱的问题。可将这个脚本改名后直接丢到path路径中,比如/bin/addjb  那么你的系统就多了一个命令 addjb了,是不是很有趣呢!

时间有限,以下脚本暂时就不做测试、解释或改进了,请先自行测试吧!有空再来更新。

二、任意三个整数,判断最大数。

Shell

1

2

3

4

5

6

7

8

9

10

11

12

13

#!/bin/bash

echo

"please enter three number:"

read

-

p

"the first number is :"

n1

read

-

p

"the second number is:"

n2

read

-

p

"the third number is:"

n3

let

MAX

=

$n1

if

[

$n2

-

ge

$n1

]

;

then

MAX

=

$n2

fi

if

[

$n3

-

ge

$MAX

]

;

then

MAX

=

$n3

fi

echo

"the max number is $MAX."

执行效果:

bcefffd739e2bd8eb312c40d8379675e.png

注:非常简单的逻辑判断脚本,有兴趣的可以改进下,练练手。

三、求 100 以内偶数的和。

方法①:

Shell

1

2

3

4

5

6

#!/bin/bash

sum

=

0

for

I

in

{

1..50

}

;

do

sum

=

$

(

(

$sum

+

2

*

$I

)

)

done

echo

"the sum is $sum"

方法②:

Shell

1

2

3

4

5

6

7

8

#!/bin/bash

let

SUM

=

0

for

I

in

$

(

seq

1

100

)

;

do

if

[

$

[

$I

%

2

]

==

0

]

;

then

let

SUM

+=

$I

fi

done

echo

"the sum is $SUM."

四、利用 for 语句 ping C 类网、ping B 类网。

①、ping C 类网:

Shell

1

2

3

4

5

6

7

8

9

#!/bin/bash

read

-

p

"C NETWORK:"

MYNET

PINGNET

=

`

echo

$MYNET

|

sed

's/\([0-9.]*\)\ .[0-9]*/\1/g'

`

let

I

=

1

while

[

$I

-

le

254

]

;

do

ping

c1

W1

$PINGNET

.

$I

&

>

/

dev

/

null

[

$

?

-

eq

0

]

&&

echo

"$PINGNET.$I  online."

||

echo

"$PINGNET.$I offline."

let

I

++

done

②、ping B类网:

Shell

1

2

3

4

5

6

7

8

9

10

11

12

#!/bin/bash

read

-

p

"B network:"

MYNET

PINGNET

=

`

echo

$MYNET

|

sed

's/\([0-9]\{1,3\}\.[0-9]\{1,3\}\)\..*/\1/g'

`

for

P

in

{

0..255

}

;

do

for

I

in

{

1..255

}

;

do

if

ping

-

c1

-

W2

$PINGNET

.

$P

.

$I

&

>

/

dev

/

null

;

then

echo

"$PINGNET.$P.$I is online."

else

echo

"$PINGNET.$P.$I is offline."

fi

done

done

五、提示输入一个用户名,判断用户是否存在,如果存在,显示一下用户默认的 shell。

Shell

1

2

3

4

5

6

7

8

9

#!bin/bash

read

p

"please input a username:"

USER

if

cut

d:

-

f1

/

etc

/

passwd

|

grep

"^$USER$"

&

>

/

dev

/

null

;

then

MYBASH

=

`

grep

"^$USER:"

/

etc

/

passwd

|

cut

d

:

-

f7

`

echo

"${USER}'s shell is $MYBASH"

else

echo

"$USER not exists."

exit

4

fi

六、监控系统登录人数,超过四个,显示已经达到四个,5S检查一下,并退出脚本(exit)

Shell

1

2

3

4

5

6

7

8

9

#! /bin/bash

read

p

"A user:"

MYUSER

cut

d

:

-

f1

/

etc

/

passwd

|

grep

"^$MYUSER"

&

>

/

dev

/

null

||

exit

6

let

COUNT

=

`

who

|

grep

"^$MYUSER"

|

wc

l

`

until

[

$COUNT

ge

4

]

;

do

sleep

5

let

COUNT

=

`

who

|

grep

^

$MYUSER”

|

wc

-

l

`

done

echo

"$MYUSER loged 4 times."

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值