1:linux shell中常用的特殊变量
(1) $@ 所有参数列表。如"$@" , 是传给脚本的所有参数的列表
(2) $0 是脚本本身的名字,$1是传递给该shell脚本的第一个参数
(3) $? 最后运行的命令的结束代码(返回值), 或函数的返回值。
(4) $$ shell本身的PID(ProcessID)
2: shell 脚本的第一行
#!/bin/bash
此脚本使用/bin/bash来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的shell的路径。
3:shell的定义变量与使用变量
定义变量 name="Liyang"
使用变量: echo $name or my_name = $name ; 只要在变量名前面加美元符号即可
注: echo ${name},加上花括号也可以。echo为输出显示命令
4:双引号的使用
str="Hello, I know you are \"$name\"! \n" 双引号里可以有变量($变量名),也可以有转义字符
echo $str #echo 输出打印变量
注意:单引号只会原样输出
5: shell中的if使用规则
##多行
if [condition1];
then
command1
elif [condition2];
command2
else
commandN
fi
##单行
if [condition];then command;fi
注意:[ ]表示条件。注意这里的空格很重要。要注意在'['后面和']'前面都必须要有空格
在shell中,condition的写法 [ $a != 1 || $b = 2 ]是不允许出,要用[ $a != 1 ] || [ $b = 2 ],而双括号就可以解决这个问题的,[[ $a != 1 || $b = 2 ]]。
shell的if条件表达式的一些常用规则:
https://blog.csdn.net/doiido/article/details/43966819
6:**shell中的for/while循环**
for (( C风格 ))
do
command
done
while [ condition1 ]
do
command
done
while(( condition1 ))
do
command
done
例子:
while [ $times -lt 1000 ]
do
XXXX
times=$(($times+1))
done
7: shell中基于命令去获取所需的变量,实现变量的赋值
eg: 通过ip获取ip所在网卡(已知ip网址$ip_addr,文件名$file_name):
nic_name=`ip address | grep $ip_addr` | awk '{printf$8}'`
sed -i "s/nic/nic=$nic_name/g" $file_name ##sed -i实现文件中文本替换
sed -i "s/^nic=.*/nic_name=\"${nic_name}\"/" ##sed -i实现文件中文本替换
8:基本的实现框架
#全局变量
para="XXXXXXXXXX"
#这里可以定义一些全局变量
#-------------------------
function parse_cmdline() {
while getopts ":参数a:参数b:" opt; do
case $opt in
参数a)
para=$OPTARG
;;
参数b)
para=$OPTARG
;;
*)
;;
esac
done
}
#--------------------------
function XXXAfunc() {
command;
}
#--------------------------
function XXXBfunc() {
command;
}
#--------------------------
function XXXCfunc() {
command;
}
#---------------------------
main() {
#命令解析函数
parse_cmdline "#@"
### 根据解析结果进行对应功能匹配
### XXXfunc表示是实现某个具体功能的函数块
if [[ $para == "XXXXA" ]]; then
XXXAfunc
elif [[ $para == "XXXXB" ]]; then
XXXBfunc
elif [[ $para == "XXXXC" ]];then
XXXCfunc
fi
}
#---------------------------
main "$@"
9:特殊环境的常用处理方法:
(1)source 文件 或者 source $变量=XXX #可以将文件或变量利用source命令变成临时的环境变量,这样在变化的环境中,即使某些内容变化,只要文件中的内容不丢失,那么所需的变量就能获取到。
(2) 添加定时任务:写一个脚本,在/etc/crontab中添加定时任务
*/1**** root /bin/bash /root/XXXX.sh >> /dev/null 2>&1 &
(>> /dev/null 标准输出重定向到/dev/null,
2>&1标准错误重定向到标准输出==》标准错误重定向到/dev/null
& 后台执行)
10: 变量的累加/乘积
a=$(($a + 1))
b=$(($b*4))