linux shell使用
1,变量的获取
普通变量:${var_name}
特殊变量:
$# 是传给脚本的参数个数
$
0
是脚本本身的名字
$
1
是传递给该shell脚本的第一个参数
$
2
是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过
9
个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,
0
表示没有错误,其他表示有错误
2,'',""和``的区别
单引号(''):单引号内是什么输出就是什么不管$还有其他
双引号(""):双引号会对双引号内的参数替换($)和命令替换(``)
反引号(``):是命令替换,命令替换是指Shell可以先执行``中的命令,将输出结果暂时保存,在适当的地方输出。语法:`command`
例:变量 n=3
echo '$n' 输出 $n
echo "$n" 输出 3
变量 USERS=`who | wc -l`
echo "Logged in user are $USERS" 输出 Logged in user are 1
3,运算符
4,shell中得比较
文件比较运算符
-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]
-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]
-f filename 如果 filename为常规文件,则为真 [ -f /usr/bin/grep ]
-L filename 如果 filename为符号链接,则为真 [ -L /usr/bin/grep ]
-r filename 如果 filename可读,则为真 [ -r /var/log/syslog ]
-w filename 如果 filename可写,则为真 [ -w /var/mytmp.txt ]
-x filename 如果 filename可执行,则为真 [ -L /usr/bin/grep ]
filename1-nt filename2 如果 filename1比 filename2新,则为真 [ /tmp/install/etc/services -nt /etc/services ]
filename1-ot filename2 如果 filename1比 filename2旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]
字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)
-z string 如果 string长度为零,则为真 [ -z "$myvar" ]
-n string 如果 string长度非零,则为真 [ -n "$myvar" ]
string1= string2 如果 string1与 string2相同,则为真 [ "$myvar" = "one two three" ]
string1!= string2 如果 string1与 string2不同,则为真 [ "$myvar" != "one two three" ]
算术比较运算符
num1-eq num2 等于 [ 3 -eq $mynum ]
num1-ne num2 不等于 [ 3 -ne $mynum ]
num1-lt num2 小于 [ 3 -lt $mynum ]
num1-le num2 小于或等于 [ 3 -le $mynum ]
num1-gt num2 大于 [ 3 -gt $mynum ]
num1-ge num2 大于或等于 [ 3 -ge $mynum ]
5,shell动态变量名
avr_0= avr_1= avr_2= avr_3= avr_4= avr_5= avr_6= avr_7= # 赋值 avr_x = for i in $(seq 0 7) do eval avr_${i}=${i} done # 取值 for i in $(seq 0 7) do tmp=$(eval echo '$'avr_${i}) eval echo ${tmp} done
6,返回这个脚本文件放置的目录
cd `dirname $0`
命令。这个命令的含义是 返回这个脚本文件放置的目录,并可以根据这个目录来定位所要运行程序的相对位置(绝对位置除外)。
7,sleep用法
s:表示秒 sleep 1s 休眠1秒
m:表示分钟 sleep 1m 休眠1分种
h:表示小时
d:表示天