脚本进阶,函数调用实例练习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了脚本进阶,函数调用实例练习相关的知识,希望对你有一定的参考价值。

一、练习:脚本:判定192.168.0.200-192.168.0.254之间哪些主机在线,要求:

1、使用函数来实现一台主机的判定过程:

2、在主程序中调用此函数判定指定范围内的所有主机的在线情况,

vim ping.sh

#!/bin/bash

#

PING() {

for i in {200..254};do

if ping -c 1 -w 1 192.168.0.$i &> /dev/null; then

echo "192.168.0.$i is up"

else

echo "192.168.0.$i is down"

fi

done

}

PING

chmod +x ping.sh


把所有功能写入函数体中,无法适用更广泛的环境,上面脚本就是这样,


下面实例在函数中使用位置变量,在主程序中调用函数体使脚本使用环境更宽泛

vim ping.sh

#!/bin/bash

#

PING() {

if ping -c 1 -w 1 $1 &> /dev/null; then

echo "192.168.0.$i is up"

else

echo "192.168.0.$i is down"

fi

done

}

for i in {200..254};dp

PING 192.168.0.$i

done


for  i in {200..254}; do

PING 172.16.100.$i

done



下面实例函数体使用return参数,在主程序中判定IP地址up和down

vim ping.sh

#!/bin/bash

#

PING() {

if ping -c 1 -w 1 $1 &> /dev/null; then

return 0

else

return 1

fi

done

}

for i in {200..254};dp

PING 192.168.0.$i

if [ $? -eq 0 ]; then

echo "192.168.0.$1 is up"

else 

echo "192.168.0.S1 is down"

done


for  i in {200..254}; do

PING 172.16.100.$i

done 


 练习二、 编写脚本/root/bin/copycmd.sh

(1) 提示用户输入一个可执行命令名称

(2) 获取此命令所依赖到的所有库文件列表

(3) 复制命令至某目标目录(例如/mnt/sysroot)下的对应路径下

 如:/bin/bash ==> /mnt/sysroot/bin/bash

/usr/bin/passwd ==> /mnt/sysroot/usr/bin/passwd

(4) 复制此命令依赖到的所有库文件至目标目录下的对应路径下

: 如:/lib64/ld-linux-x86-64.so.2 ==> 

/mnt/sysroot/lib64/ld-linux-x86-64.so.2

(5)每次复制完成一个命令后,不要退出,而是提示用户键入新

的要复制的命令,并重复完成上述功能;直到用户输入quit退出


#1/bin/bash

dst=/mnt/sysimage

if [ ! -e "$dst" ];then

mkdir -pv $dst

fi

my_cp() {

local src=$1

local dst=$2

local dir=`dirname $dst`

if [ ! -e $dir ];then

mkdir -pv $dir

fi

\cp -a $src $dst

}

while true;do

read -p "enter you cmd;" short_cmd

if [ "$short_cmd" == "quit" -o "$short_cmd" == "q" ];then

exit 0

fi

short_cmd=`basename $short_cmd`

long_cmd=`which --skip-alias --skip-functions --skip-dot --skip-tilde $short_cmd` &>/dev/null

#cp bin

my_cp $long_cmd $dst$long_cmd

# cp lib

for lib in `ldd $long_cmd |egrep -o "/[^[:space:]]+"`;do

echo -e "\n$lib\n"

my_cp $lib $dst$lib

done

done


以上是关于脚本进阶,函数调用实例练习的主要内容,如果未能解决你的问题,请参考以下文章

python进阶练习之——调用函数

JavaScript 函数进阶函数(匿名回调递归函数)及相关练习

C++并发类成员函数调用(练习1)

JavaScript 函数进阶丨 函数的定义和调用

表达式树练习实践:C#值类型引用类型泛型集合调用函数

Python 基础进阶