公司上周需求编写一个自动切换IP的脚本,感觉linux shell也是极其好玩的,也学到了很多东西,暂且做些许简单记录。
推荐参考:图灵丛书-Linux Shell脚本攻略
其他参考:http://man.linuxde.net/shell-script
1.
chmod 777 script.sh
./script.sh
;等同于 enter键
2.打印
echo xx
printf: 类似c语言
3.变量/环境变量
cat /proc/
PID/environ取进程id:grep进程名var=”value”echo
var
echo ${var}
#!/bin/bash
#这是注释
fruit=apple
count=5
echo "we have $count ${fruit}(S)"
添加环境变量:
PATH=”$PATH: /home/user/bin”
export path
获取字符串长度:
var=ashdhasdhabsjd
echo ${#var}
4.数学运算
let result=var1+var2
let result++
let result–
也可以:result=$[var1+var2]
以上方法仅限整数运算,浮点数用bc工具
5文件描述符和重定向
清空写入:echo “this is a sample text 1” >temt.txt
追加:echo “this is a sample text 1” >>temt.txt
6.数组与关联数组
arr=(1 2 3)
arr[0]="test1"
arr[1]="test2"
index=5
echo ${arr[$index]}
echo ${arr[*]}
echo ${#arr[*]}
7.about 日期
$date "+%d %B %Y"
20 May 2010
其他日期参考字符串列表
设置日期:
date -s "格式化日期字符串"
date -s "20 June 2009 11:01:22"
延时:sleep 10
8.函数
fname arg1 arg2;
fname(){
echo $ 1,$2; #访问参数1,参数2
echo "$@" ; #列表形式一次性打印所有参数
echo "$*"; #类似$@,但是参数被作为单个实体
return 0; #返回值
}
9.迭代器
for i in{a..z};
do actions;
done;
也可以像c语言一样
for((i= 0;i<10;i++)){
commands; #使用变量i
}
while condition
do
commands;
done
10.比较测试
if condition;
then
commands;
fi
###
if condition;
then
commands;
elif condition;
then
commands
else
commands
fi
算术比较:-gt大于,-lt小于,-ge大于等于,-le小于等于,-ne不等于
逻辑与-a,逻辑与-o
[$var -eq 0] or [ $var -eq 0]
[$var1 -ne 0 -a $var2 -gt 2]
-o
字符串比较用==