shell 编程
#shell编程
$1 ~$9 参数, 10以上的参数${10}
$# 参数个数
$* ,$@ , 参数列表, 不加双引号,2个一样,加双引号后,$*是整体
$? 上一次执行结果的返回值,或函数返回值
#运算
$((表达式)) 或 $[表达式]
#条件
[空格 表达式 空格]
$1 -eq 100 ==
$1 -lt 100 <
$1 -gt 100 >
$1 -ge 100 >=
$1 -le 100 <=
$1 -ne 100 !=
#if
if [条件表达式]
then
elif [条件表达式]
then
else
fi
#case
case $1 in
1)
xxx
;;
2)
xxx
;;
*)
xxx
;;
esac
# for
for((i=1;i<100;i++))
do
xxx
done
for i in $@
do
xxx
done
#while
while [条件表达式]
do
xxx
增量表达式
done
#函数
#定义函数
function 函数名(){}
#shell 工具
cut
-d 分隔符
-f 取第几列
cut -d " " -f 1 cut.txt
cut -d " " -f 2,3 cut.txt
#awk
awk [选项参数] 'pattern1{action1} pattern2{action2}...' filename
-F 指定输入文件折分隔符
awk -F: '/^root/{print $7}' passwd
awk -F: '/^root/{print $1","$7}' passwd
awk -F : 'BEGIN{print "user, shell"} {print $1","$7} END{print "dahaige,/bin/zuishuai"}' passwd
awk -v i=1 -F: '{print $3+i}' passwd
awk -F: '{print "filename:" FILENAME ", linenumber:" NR ",columns:" NF}' passwd
ifconfig eth0 | grep "inet addr" | awk -F: '{print $2}' | awk -F " " '{print $1}'
#注意: 赋值语句=两边不能加空格,条件语句[]内左右必须有空格 #while sum=0 i=0 while [ $i -le 100 ] do sum=$[$sum+$i] i=$[$i+1] done echo "结果:$sum" #if if [ $1 -eq 1 ] then echo 'hello beijing!!!' elif [ $1 -eq 2 ] then echo 'hello shanghai!!!' else echo 'hello wuhan!!!' fi #fun #定义函数 function sum() { total=$[$1+$2] # return $total } #控制台输入 read -t 5 -p "5秒内输入第一个加数:" n1 read -t 5 -p "5秒内输入第二个加数:" n2 #调用函数 sum $n1 $n2 #echo "结果:$?" echo "结果:$total" #/for i #从1加到100 sum=0 for((i=0;i<=100;i++)) do sum=$[$sum+$i] done echo "和为:$sum" #for in for i in "$@" do echo "我的女神:$i" done for j in "$*" do echo "我的女神:$j" done #case case $1 in 1) echo '小明哥!!!' ;; 2) echo '菲儿姐!!!' ;; *) echo 'baby face!!!' ;; esac