shell的一些问题
来源:互联网 发布:巨人网络策划笔试题 编辑:程序博客网 时间:2024/04/30 09:14
1、bc中的scale
echo "scale=0;13 * 0.6 "|bc
echo "scale=0;13 * 0.6 / 1"|bc -l
Jared Liu: bc做乘法是不受scale变量影响的,想解决这个问题就是第二种trick吧
2、bc的小数运算和四舍五入
echo "scale=2;2/3"|bc
awk BEGIN'{printf "%.2f\n", 2/3}'
awk BEGIN'{printf "%.0f\n", 2/3}'
Jared Liu: bc计算出来的结果小于1的时候(>0),整数部分会为空,而awk在制定float的条件下会自动四舍五入;另外如想想用bc,那么要自己写两行awk来模拟四舍五入的行为了,稍猥琐。。。。
3、正反通吃
cat的姐妹tac,写法是横向反向的,功能也是;还有一个孪生兄弟rev,纵向也反向了
Jared Liu: cat够用了
4、sed的bug?
sed -n '1,0p' filename
sed -n '1,1p' filename
Jared Liu: 结果都是返回一行
5、expr不能算乘法?
expr 5 * 5
expr: syntax error
Ray: 在shell中*是通配符,具有特殊意义,对于*的使用要进行转义,否则在解释的时候将*进行通配替换
解决:
expr 5 \* 5
echo $((5*5))
echo "5*5"|bc
6、rm -f的返回值
rm -f a.txt && echo OK,即使a.txt不存在也会echo OK
7、可以不使用管道时,减少管道的使用
cat someweb|grep "href"和grep "href" someweb
后者效率会好50%左右
8、尽量使用重定向,不用cat
如果对所有的脚本进行一下统计,那么使用的最多的几个命令当中,肯定有cat。
如果你关心脚本的效率,那就尽早放弃cat。(下面的数据可能会更有说服力)
而实际上,cat能完成的功能,基本都可以用重定向来完成。
例如:
cat file|while read x
do
((line++))
done
推荐采用重定向完成:
(这同时也解决了父shell进程和子shell进程数据共享的问题)
while read x
do
((line++))
done < file
第二种写法能提高效率90%左右
9、尽量使用内置命令,而不用同样功能的系统命令
对于内置命令,(可以通过man builtin查看),在执行的时候是不会产生子shell进程的。因此其执行速度会远远的高于系统命令。
例如:echo是一个bash内置的命令。当然,也存在和其功能相同的一个系统命令,名字也叫echo,在/bin/echo。这两个的性能差距是很大的。后者效率比前者低90%左右
- shell的一些问题
- adb shell 的一些问题
- shell中要注意的一些问题
- shell 编程中[] 的一些问题
- shell下的一些符号问题
- 关于shell 的一些调试问题
- 一些经典的 Shell 脚本面试问题
- shell-一些小问题
- [shell] shell的一些命令
- Shell脚本中遇到的一些细节问题
- Shell 的一些tips
- shell的一些命令
- shell的一些记录
- 常用的一些 shell
- 有关Shell的一些
- Shell的一些笔记
- shell的一些基本知识
- shell的一些通配符
- JS 在标签中使用this 需注意事项
- 各种音频编码方式详解
- javascript setTimeout方法的使用
- cocos2d-x 编译 Anroid版本遇到的问题以及解决办法
- 固体模拟简介(Introduction to solid)
- shell的一些问题
- 数据库日志减肥。自己试过可以
- Sed 的使用方法
- ORA-12519引出的问题
- Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站
- Keepalived安装
- ssh 登录基本原理和验证过程
- iframe跨域
- 寻找一个字符串中最长的重复子串,如 abcdabc 最长重复串 是abc