码迷,mamicode.com
首页 > 系统相关 > 详细

shell技巧

时间:2018-03-08 17:33:34      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:shell 小技巧


1、source和sh的区别

a、.和source是等价的,都只是在当前的shell中运行,影响的是当前shell的环境变量

b、sh是新开一个shell运行,影响子shell的环境变量


2、获取字符串的最后一个字符

STR=123456abc

FINAL=${STR: -1}


3、shell计算中使用除法,默认上都是整除。


比如:
num1=2
num2=3
num3=`expr $num1 / $num2` # 变量之间有空格

这个时候num3=0 ,是因为是因为expr不支持浮点除法

解决的方法:
num3=`echo "sclae=2; $num1/$num2" | bc`  #必须要安装bc工具,sclae控制小数点后保留几位

还有一种方法
awk 'BEGIN{printf "%.2f\n","$num1"/"'$num2'"}'  #1.awk使用shell变量,必须要用"''"包围,2.$num1和$num2如果为字符串,可以自动进行类型转换
如果用百分比表示
awk 'BEGIN{printf "%.2f%\n",("$num1"/"'$num2'")*100}' #


4、SQL或者shell脚本中尽量不要用tab间隔,特别是2个tab,否则在shell中批量粘贴脚本时会出现问题,可能会出现命令提示的奇怪问题


5、把某个用户改为 group(s)

 usermod -G groups loginname #重新赋一个新组

 usermod -a -G groups loginname #添加一个新的组



6、ue 在行模式下,可以通过左对齐和右对齐的方式在行首部和行末批量插入字符


7、shell脚本中的case


case "$digit" in
        "1")
                echo "output a"
                #输出两个分号
                ;;
        "2")
                echo "output b"
                ;;
        "3")
                echo "output c"
                ;;
        *)
                #其它输入
                echo "output error,please input 1/2"
                ;;
esac



8、shell 中的$

$0 这个脚本的执行名字
$n 这个脚本的第n个参数值,n=1..9
$* 这个脚本的所有参数,此选项参数可超过9个。
$# 这个脚本的参数个数搜索
$$ 这个脚本的PID(脚本运行的当前进程ID号)
$! 执行上一个指令的PID(后台运行的最后一个进程的进程ID号)
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$- 显示shell使用的当前选项,与set命令功能相同
$@ 跟$*类似,但是可以当作数组用


9、

shell技巧

标签:shell 小技巧

原文地址:http://blog.51cto.com/395469372/2084247

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!