您的位置:首页 > 运维架构 > Shell

shell 总结

2015-12-11 23:49 585 查看
一、特殊变量
$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
}
三、读取指定行并写入文件
#!/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
# &&表示前面执行成功才继续执行后面
# ||表示或者


本文出自 “rabbit” 博客,请务必保留此出处http://xiajie.blog.51cto.com/6044823/1722226
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: