二、简单的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))