首页
zfl9's blog
取消

Shell 特殊运算符

短路运算符 cmd1 && cmd2,先执行 cmd1,如果 cmd1 返回假,则将 cmd1 的返回值作为最终结果;如果 cmd1 返回真,则执行 cmd2,并将 cmd2 的返回值作为最终结果。 cmd1 || cmd2,先执行 cmd1,如果 cmd1 返回真,则将 cmd1 的返回值作为最终结果;如果 cmd1 返回假,则执行 cmd2,并将 cmd2 的...

Shell 特殊字符

通配符 模式 说明 * 匹配任意个字符(包括0个);用于文件匹配时,不匹配隐藏文件,也不递归匹配 ** 递归匹配当前目录下的所有文件,但.开头的隐藏文件除外 .* 匹配当前目录下的隐藏文件,目录也是一种文件...

Shell subshell

source source 有点类似于 C/C++ 的 #include 预处理指令,也就是 文件包含。 如source a.sh,解释器执行到此处时,会在当前进程解释执行a.sh的内容。 从效果上看,等价于将此语句替换为a.sh的文件内容,因此和#include很相似。 可以利用此特性,将一些通用代码提取到公共文件,然后在用的时候source一下。 source 还有个别名...

Shell 管道

用法 将上一个命令的标准输出作为下一个命令的标准输入,这两个命令之间使用|管道连接符相连。 如,查找是否存在用户 zhang3:cat /etc/passwd | grep 'zhang3'或grep 'zhang3' /etc/passwd。 注意:管道只会将前一个命令的 stdout 作为后一个命令的 stdin,而 stderr 则不会被后一个命令读取! 如果要让后一个命令获取...

Shell 重定向

要彻底理解重定向,我们必须先来了解这些基础知识: 文件描述符 文件描述符(FD, File descriptor)是一个表述 打开的文件 的抽象化概念。 FD是一个非负整数,本质是内核文件表(每个task都有,由内核维护)的索引值。 当程序请求打开文件时,内核执行相关操作,然后向程序返回一个FD,指代此文件。 stdin、stdout、stderr 每个进程(除了守护进程)都会默...

Shell 函数

定义与使用 在 shell 中,同样有函数的概念,具体语法如下: # 写法1 (推荐, 可移植性强) func_name() { command1 command2 ... commandN return exit_code } # 写法2 function func_name { command1 command2 .....

Shell IFS 变量

IFS 变量 IFS,即Internal Field Seprator,默认为: 空格、制表、换行 多个连续空格会被当成一个空格处理,但是其它两个不会被合并 IFS 与 foreach 不要试图改变 IFS 变量的值来改变 foreach 的元素分割符,因为不生效 比如,我想遍历 IPv4 地址的每个部分(点号作为分隔符),这是最初的写法 $ IFS='.'; for byte ...

Shell 分支与循环

分支/循环语句块不可为空,如果不需要就不要写,如果确实需要,就用:内置命令占位。 if if 根据 condition 的 退出状态码 决定是否执行,0 是 真(条件成立),非 0 是 假(条件不成立)。 常用的条件测试命令有:test、[、[[,它们的具体用法已在前一篇中给出,这里就不再复述了。 if condition; then command1 com...

Shell 打印输出

echo echo 可能是我们接触 Linux 的第一个命令了。大家都比较熟悉,下面是几个简单的用法: echo "www.zfl9.com www.baidu.com www.google.com",使用双引号扩起来; echo 'www.zfl9.com www.baidu.com www.google.com',使用单引号扩起来; echo www.zfl9.com ...

Shell 运算符

算数运算符 bash 支持 4 种语法来进行算数运算(只支持整数):let、(())、$(())、$[](过时,同 $(()))。 let、(())、$(()) 这 3 个都是内置命令,它们所支持的运算符是一样的,那么它们有什么区别呢? let:支持多个算数表达式的计算(单纯计算) (()):只支持单个算数表达式的计算(单纯计算) $(()):只支持单个算数表达式的计算(...