去掉最后一个字符

  • sed 's/.$//'

  • awk '{sub(/.$/,"")}1'

  • awk '{printf $0"\b \n"}'

[root@ ~]# echo "387691,387710,387720,387817,387922,388067,"
387691,387710,387720,387817,387922,388067,
[root@ ~]# echo "387691,387710,387720,387817,387922,388067," | sed 's/.$//'
387691,387710,387720,387817,387922,388067
[root@ ~]# echo "387691,387710,387720,387817,387922,388067," | awk '{sub(/.$/,"")}1'
387691,387710,387720,387817,387922,388067
[root@ ~]# echo "387691,387710,387720,387817,387922,388067," | awk '{printf $0"\b \n"}'

shell脚本传参小技巧

一般常见的脚本参数传递:./script.sh --argv1=a1 --argv2=a2 或者 ./script.sh -a1 a1 -a2 a2 ,或者两种混用

ParseArguments() {
while [ $# != 0 ] ;
do
case "$1" in
-argv1|-a1)
argv1=$2
shift 2
;;
--argv1=*)
argv1=${1#--argv1=}
shift
;;
-argv2|-a2)
argv2=$2
shift 2
;;
--argv2=*)
argv2=${1#--argv2=}
shift
;;
-argv3|-a3)
argv3=$2
shift 2
;;
--argv3=*)
argv3=${1#--argv3=}
shift
;;
*)
echo "$1 error"
echo $"$0: Usage: ..."
exit 1
;;
esac
done
} ParseArguments "$@"

对True | False 进行判断的函数

is_true() {
case "$1" in
[tT] | [yY] | [yY][eE][sS] | [tT][rR][uU][eE])
return 0
;;
esac
return 1
} is_false() {
case "$1" in
[fF] | [nN] | [nN][oO] | [fF][aA][lL][sS][eE])
return 0
;;
esac
return 1
}

当is_true函数的第一个参数(后面的参数会忽略掉)为忽略大小写的t、y、yes或true时,返回状态码0,否则返回1。

当is_false函数的第一个参数(后面的参数会忽略掉)为忽略大小写的f、n、no或false时,返回状态码0,否则返回1。

对比两个目录的文件差异

diff <(tree -Ci --noreport d1) <(tree -Ci --noreport d2) 

diff -r d1 d2

vimdiff  <(find d1 -printf "%P\n" | sort) <(find d2 -printf "%P\n" | sort)

#或者远程比较:
vimdiff <(ssh -p 22 -o StrictHostKeyChecking=no 127.0.0.1 "find /tmp/test/t1 -printf '%P\n' | sort" 2>/dev/null) <(find /tmp/test/t2 -printf "%P\n" | sort)

vimdiff方法可以得到如下截图效果:

shell 中的小技巧的更多相关文章

  1. ios开发中的小技巧

    在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIViewal ...

  2. lua学习笔记11:lua中的小技巧

    lua中的小技巧,即基础lua语言本身的特种,进行一个些简化的操作 一. 巧用or x = x or v 等价于: if not x then x = v end 假设x为nil或false,就给他赋 ...

  3. 杂谈---小故事小道理,面试中的小技巧(NO.2)

    本篇是接着上一篇面试随笔的,上一次有猿友反应写的有些“扯淡”,LZ思来想去最大的原因可能是由于上一章写的全是一些大忌,既然是大忌,那么在现实当中发生的概率还是相对较小的,大部分人还是很少在面试中犯如此 ...

  4. iOS开发中调试小技巧

    对于软件开发而言,调试是必须学会的技能,重要性不言而喻.对于调试的技能,基本上是可以迁移的,也就是说你以前在其他平台上掌握的很多调试技巧,很多也是可以用在iOS开发中.不同语言.不同IDE.不同平台的 ...

  5. iOS中TableView小技巧

    摘要: TableView是ios开发中经经常使用到的控件,这里统一记录一下开发中遇到的经常使用小技巧,不断探索更新.也希望大家能够告诉我很多其它经常使用的小技巧啦~一起进步 1.去除多余的列表线条 ...

  6. iOS - 开发中调试小技巧

    对于软件开发而言,调试是必须学会的技能,重要性不言而喻.对于调试的技能,基本上是可以迁移的,也就是说你以前在其他平台上掌握的很多调试技巧,很多也是可以用在iOS开发中.不同语言.不同IDE.不同平台的 ...

  7. 【js】中的小技巧

    本文主要介绍一些JS中用到的小技巧 1. 类型强制转换   1.1 string强制转换为数字 可以用*1来转化为数字(实际上是调用.valueOf方法) 然后使用Number.isNaN来判断是否为 ...

  8. 分享几个asp.net开发中的小技巧

    下面这几个,是在实际开发或阅读中发现的一些问题,有些甚至是有很多年开发人员写出的代码,也是很多人经常犯的错误.各位可以看看,你有没有躺着中枪. 第一个,对整型变量进行非null判断. // a 是in ...

  9. EF(Linq)框架使用过程中的小技巧汇总

    这篇博客总结本人在实际项目中遇到的一些关于EF或者Linq的问题,作为以后复习的笔记或者供后来人参考(遇到问题便更新). 目录 技巧1: DbFunctions.TruncateTime()的使用 技 ...

随机推荐

  1. JMeter登录总是提示用户名不能为空的解决

    已传入参数了呀,还是提示用户名不能为空 解决: 将url拼接上参数 --

  2. python自动化系列

    1.pytnon环境及IDE 文件还是txt的,是如何查找到python 的呢? 是通过path查找的,且还按以下打印出的内容逐步查找的 mac版

  3. python使用cx_Oracle在Linux和Windows下的一点差异

    1. 主要是线程方面的差异. Windows下,把cx_Oracle.connect(connectedId)得到的handle传给定时器线程,主线程和和定时器可以用同一个handle. 但Linux ...

  4. python SMTP

    一.一开始,相信SMTP服务,所以在本机安装了一个 apt-get install sendmail apt-get install sendmail-cf apt-get install squir ...

  5. centos7及服务器端安装python2.7.13, setuptools, pip

    1. 安装python2.7.13 因为涉及到安装到服务器,所以可能不能直接在usr/bin及usr/local/bin下安装,所以本文详解安装在自定义目录下. 下载安装包: $ wget https ...

  6. vim自动格式化

    ,gg 跳转到第一行 ,shift+v 转到可视模式 ,shift+g 全选 ,按下神奇的 = 你会惊奇的发现代码自动缩进了,呵呵,当然也可能是悲剧了.

  7. 9.用js制作静态分页

    效果如图: css 代码: #page { text-align: center; } .page { display: inline-block; } .page a { padding: 3px ...

  8. React创建组件的不同方式(ES5 & ES6)

    一. 首先缕清楚React.createElement.React.createClass.React.Component之间的关系 1. React.createElement(HTML eleme ...

  9. 219. 存在重复元素 II

    给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k. 示例 1: 输入: nums = ...

  10. Ajax-创建ajax

    UNSENT : 未发送,刚开始创建完成AJAX对象,默认的状态就是0 OPENED : 已打开,执行了xhr.open之后状态变为1 HEADERS_RECEIVED :响应头信息已经成功的返回并且 ...