第十三章 学习shell script【鸟哥linux私房菜学习笔记】

二、简单的shell script练习

(一)简单范例

1.交互式脚本

文件名前缀相同,通过后缀的时间字符串,区分不同的文件。

绿色框框内为操作时犯错误的地方,请留意。

命令的取得信息:$(command)

2、简单的加减乘除

$((计算式))


(二)script的执行方式区别(source,shscript,./script)

1、直接命令执行(不论是相对路径/绝对路径haishi $PATH内),或者是使用bash(或者sh)执行脚本时,如下:


使用了新的bash环境来执行脚本内的命令。所以当子进程bash执行完后,子进程bash内的所有数据便被删除。

2、source在父进程中执行


当bash中的某些更改希望不注销系统就一直生效时,就要使用source

这也是为啥你不登出系统而要让某些写入~/.bashrc 的设定生效时,需要使用『 source ~/.bashrc 』而不能使用『 bash ~/.bashrc 』是一样的

五、

2. for...do...done(固定循环)

[dmtsai@study bin]$ vim pingip.sh 
#!/bin/bash
# Program
# Use ping command to check the network's PC state.
# History
# 2015/07/17 VBird first release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
network="192.168.1"               #先定义一个网域的前面部分!
for sitenu in $(seq 1 100)        # seq为sequence(连续)的缩写之意
do
	# 底下的程式在取得ping 的回传值是正确的还是失败的!
        ping -c 1 -w 1 ${network}.${sitenu} &> /dev/null && result=0 || result=1
	# 开始显示结果是正确的启动(UP) 还是错误的没有连通(DOWN)
        if [ "${result}" == 0 ]; then
                echo "Server ${network}.${sitenu} is UP."
        else
                echo "Server ${network}.${sitenu} is DOWN."
        fi
done


ping -c 1 -w 1

ping 命令中,-c是ping的次数,-w是执行的时间,这里是1秒

&>代表的是,无论正确还是错误,都放入到 /dev/null垃圾箱中。

$(seq 1 100)  可以替换为 {1...100}


在一串指令的执行中,还需要借由其他额外指令所提供的咨询时,可以使用反单引号『`指令`』或『$(指令)』

当需要做运算时,使用$((运算))

例如:total_day=$(($(($date1-$date2))/60/60/24))



猜你喜欢

转载自blog.csdn.net/vicky198/article/details/80319100
今日推荐