shell 总结

一、特殊变量

$0:当前脚本的文件名
$num:num为从1开始的数字,$1是第一个参数,$2是第二个参数,${10}是第十个参数
$#:传入脚本的参数的个数
$*:所有的位置参数(作为单个字符串) 
$@:所有的位置参数(每个都作为独立的字符串)。
$?:当前shell进程中,上一个命令的返回值,如果上一个命令成功执行则$?的值为0,否则为其他非零值,常用做if语句条件
$$:当前shell进程的pid
$!:后台运行的最后一个进程的pid
$-:显示shell使用的当前选项
$_:之前命令的最后一个参数

二、数组循环示例

#!/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]}

三、读取指定行并写入文件

#!/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

四、ping某个网段的主机,显示是否存活

#!/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
# &&表示前面执行成功才继续执行后面
# ||表示或者


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章