Who am I

我的照片
Hefei, Anhui, China
Research Fields: Satellite Geodesy

2012年2月14日星期二

Shell eval, expr, bc命令

eval命令
作用:首先扫描命令行进行所有的替换,然后再执行命令。用于那些一次扫描无法实现其功能的变量,该命令对变量进行两次扫描。


用法:eval command 


举例:
1. 两次扫描(先替换,后执行)
有一文件,名为test.txt,内容为hello shell world!
变量myfile="cat test.txt"
echo $myfile          显示结果为:cat test.txt
eval echo $myfile    显示结果为:hello shell world!


2. 获取最后一个参数
eval echo /$$#
第一遍扫描去掉/,shell再次执行时,$#是参数个数,$($#)是最后一个参数


expr命令
作用:用于简单的整数计算和字符串操作。
用法:expr expression
举例:
整数运算:
expr 14 % 9           5
expr 10 + 10          20
expr 1000-900        100
expr 1000/10          100
expr 10 /* 100        1000 (使用*时,需用/进行转义)


字符串操作:
计算字符串长度    expr length "this is a test"          结果为:14
抓取子字符串       expr substr "this is a test" 3 5     结果为:is is
获取第一个字符出现的位置  expr index "sarasara" a    结果为:2
字符串重现          expr quote sara                       结果为:sara


增量计数:
LOOP=0
LOOP=`expr $LOOP+1`


模式匹配
使用expr通过制定冒号选项计算字符串中的字符数。
VALUE=account.doc
expr $VALUE : '.*'    结果为8,变量VALUE中一共有8个不同的字符
expr $VALUE : '[0-9]*'   计算字符串中的数字个数

没有评论:

发表评论