1、特殊变量shell
$0:当前脚本的文件名 $num:num为从1开始的数字,$1是第一个参数,$2是第二个参数,${10}是第十个参数 $#:传入脚本的参数的个数 $*:全部的位置参数(做为单个字符串) $@:全部的位置参数(每一个都做为独立的字符串)。 $?:当前shell进程中,上一个命令的返回值,若是上一个命令成功执行则$?的值为0,不然为其余非零值,经常使用作if语句条件 $$:当前shell进程的pid $!:后台运行的最后一个进程的pid $-:显示shell使用的当前选项 $_:以前命令的最后一个参数
2、数组循环示例数组
#!/bin/bash net=($(ifconfig |grep ether|awk '{print $2}')) for ((i=0;i<${#net[*]};i++)) do echo "${net[$i]}" done
#!/bin/bash list=(1 2 3) for ((i=0;i<${#list[*]};i++)) do echo $[${list[$i]}*$1] done # 取得数组元素的个数 length=${#array_name[@]} # 或者 length=${#array_name[*]} # 取得数组单个元素的长度 lengthn=${#array_name[n]}
3、读取指定行并写入文件bash
#!/bin/bash file=/etc/passwd num=(20 40 60 56 32 25) for ((i=0;i<${#num[*]};i++)) do head -${num[$i]} $file |tail -1 >>/tmp/test.log done
4、ping某个网段的主机,显示是否存活ide
#!/bin/bash for i in `seq 100 105`;do ping -c 1 192.168.0.$i >>/dev/null && echo "192.168.0.$i is up" || echo "192.168.0.$i id down" done # &&表示前面执行成功才继续执行后面 # ||表示或者