`

shell一些技巧和知识点

阅读更多
; 表示的是一个命令执行完, 忽略其返回值, 继续执行下一行

&& 表示只有前面为true才继续执行后面的命令, 否则忽略, 可以理解为短路执行

|| 表示子前面为false才继续执行后面的命令, 这个比以前看到的解释更容易理解

凡是要输出字符串的, 最好用引号括起来, 否则容易被shell理解为命令, 这一点很容易疏忽

{}是一种命令块的写法

:可以看成append操作

export用来将一个变量升级为环境变量

str=
这行代码表示将str这个变量设置为null

${str:-+=expr} 这些操作忘记了, 还需要巩固一下

source会将script看成当前shell进程的一部分, 而不是生成一个sub shell进程来执行脚本, source用来加载公共的函数, 可以理解为import

exec用来结束当前shell进程, 并重新生成一个新的进程来执行脚本

()用来将多个命令放到一个sub shell进程中去执行, 可以理解为将表达式变成函数

{} 理解成匿名函数吧, 一般在awk中常见

$()和``是一回事, 不过前者辨识度更高, 建议常用, 后者容易与''混淆, 另外一个前者嵌套起来更简单, 不过前者移植性较差

${}除了用来界定变量之外, 还有一个功能实现字符串变量的substring操作, #表示去掉左边的, %表示去掉右边的, 单数表示最小匹配, 双数表示最大匹配, 可以通过键盘上#和%相对于$的位置来记忆, linux上的命令参数大部分记忆起来很伤脑筋:(

${}还可以用来设置默认值, 这块更复杂, 不记也罢

${#str}用来计算变量的字符长度

()的另一个作用是用来定义一个数组, 而针对数组的访问则利用的是[], 注意数组的下标base是0, 另外@用来表示全部, 可以理解为all

$(())只针对算数和逻辑运算, 里面的变量可以不用带上$前缀, 当然带上也不为错

shell中的0表示true, 非零表示false

(())用来直接进行运算, 会让我们的代码更简洁, 比如变量不用加$前缀

$0表示的是脚本路径, $1...n代表的是脚本路径之后的参数

函数可以理解为脚本中的脚本, 不过函数中$0表示的仍然是脚本路径, 而不是函数名

$10不是表示第十个参数而是第一个参数后面带一个0

一般#跟数量关系比较大, 比如${#str}表示变量长度, 而$#表示参数个数, 测试是否有传参数 [ $# = 0 ]
分享到:
评论

相关推荐

    Linux+Shell命令行及脚本编程实例详解-刘艳涛.mobi kindle版

    本书偏重于实践教学,在讲解理论知识时,通过一些典型实例让读者了解理论知识在实际环境中的应用,并对易混淆和较难理解的知识点做了重点分析,以加深读者对知识的理解。另外,作者专门为本书录制了高清配套教学视频...

    LINUX与UNIX_SHELL编程指南

    本资料共分五部分,第一部分为介绍shell的基本知识;第二部分和第三部分分别介绍文本过滤和系统登陆以后...第四部分是介绍shell编程的基础知识,而第五部分则就是高级shell编程技巧;希望此书能够给大家带来一点帮助。

    linux shell 编程

    里面共分为3本书,有初级的,中级的,高级的。...主要知识点分为6大部分 第一部分讲解shell 第二部分讲文本过滤 第三部分讲登陆环境 第四部分讲基础shell编程 第五部分讲高级shell编程技巧 第六部分讲解shell编程经验。

    Linux Shell脚本实战-压缩文件自动解压脚本

    我们可以通过本次课程学习,提高shell编程的技巧,掌握一个知识点运用比较综合的项目开发过程, 而且还会学习到shell脚本优化的一些思想。 适用人群 : ???? ? 适合有一定的linux shell编程基础知识,想进一步提高...

    linux c 王者归来part3

     讲解详细:对每个知识点都从原理、作用、语法、示例和技巧等多角度进行分析  贴近实际:对开发中经常用到的Linux进程操作、文件操作和网络编程做了深入剖析  重点突出:对C语言本质和Linux程序设计中容易遇到的...

    Linux C程序设计王者归来Part1

     讲解详细:对每个知识点都从原理、作用、语法、示例和技巧等多角度进行分析  贴近实际:对开发中经常用到的Linux进程操作、文件操作和网络编程做了深入剖析  重点突出:对C语言本质和Linux程序设计中容易遇到的...

    linux c王者归来 part2

     讲解详细:对每个知识点都从原理、作用、语法、示例和技巧等多角度进行分析  贴近实际:对开发中经常用到的Linux进程操作、文件操作和网络编程做了深入剖析  重点突出:对C语言本质和Linux程序设计中容易遇到的...

    vim使用进阶:vim使用技巧、配置、命令和插件

    本文是本系列的序言,讲述我使用vim的经历和心得,以及对vim初学者的一些建议。文中的抓图展示了我的vim使用环境。 vim使用进阶: 使用会话和viminfo 本文介绍如何使用vim的会话 (session) 和viminfo来恢复vim的...

    GNU make中文手册

    3. 之前你对GNU make没有多少概念、或者刚开始接触,本身又想成为一个Linux下的专业程序员,那么建议:完整学习本文的各个章节,包括了基础知识和高级用法、技巧。它会为你以后在Linux下的工程开发、工程管理提供...

    入门学习Linux常用必会60个命令实例详解doc/txt

    这是因为Linux和许多版本的Unix一样,提供了虚拟控制台的访问方式,允许用户在同一时间从控制台(系统的控制台是与系统直接相连的监视器和键盘)进行多次登录。每个虚拟控制台可以看作是一个独立的工作站,工作台...

    RED HAT LINUX 6大全

    12.7 解决问题的一些技巧 233 12.8 小结 233 第13章 网络文件系统 235 13.1 NFS安装 235 13.2 启动和停止NFS守护程序 236 13.3 NFS状态 236 13.4 配置NFS服务器和客户 236 13.4.1 建立/etc/exports文件 237 13.4.2 ...

    Tcl_TK编程权威指南pdf

    因此,我就总结了一套编程技巧以充分利用Tcl/Tk的强大功能,同时回避一些棘手的问题。这本书就是一本帮助你最大限度地利用Tcl/Tk并回避一些我所经历过的令人头痛的问题的实用编程指南。 我接触Tcl语言大概已经有10...

    LINUX网站建设技术指南

    编辑推荐 本书介绍如何在Linux下建立,运行并维护站点的综合技术,它适合于有一定的Linux或Linux基本操作基础的网络建立者。 本书从建站的准备工作开始,写到建立功能强大的INTERNET网站,...11.4.5 几点探讨和功能扩充

    vi中文手册vim_user_manual_603.0.pdf

    不要试图从本手册中去获取什么知识, 使用Vim更多的是一种技能而 不是一种知识, Vim的学习需要的更多的不是头脑而是双手, 经常按书中 ...前在SHELL里做的几乎一切事. 事实上你已经成了一个无可救药的Vim骨 灰级玩家.

    操作系统安全:lynic系统安全审计报告分析.docx

    lynic系统安全审计报告分析 常用参数 常用参数 小技巧 如果lynis 不是通过带有man 页面的包进行安装的话,...在审计过程中,Lynis将收集结果和其他数据点。 这些信息存储在报表文件,默认情况下/var/log/lynis-report.da

    高薪程序员必备刷题软件-awesome-tools-for-junior-developers:为有抱负的开发人员精心挑选的流行工具、提示和技

    为有抱负的开发人员精心挑选的流行工具、提示和技巧列表。 要添加到存储库,只需获取您的收藏夹的名称、链接和可搜索的简短描述。 尽量保持您亲自尝试过并会推荐给您的朋友和同事的高级产品。 也欢迎您希望在您刚...

    JAVA上百实例源码以及开源项目

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    JAVA上百实例源码以及开源项目源代码

    EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件...

Global site tag (gtag.js) - Google Analytics