Linux shell符合使用

Linux元字符
* - 多个字符

  1. ls * 显示当前目录下文件及直接子目录下文件
  2. echo * 显示当前目录多有文件名称用空格分隔。
  3. echo before * after 其中*将显示所有的当前文件夹名称

? - 匹配一个字符

  1. l?ve.txt 将显示所有love.txt, ldve.txt

[] - [a-z],[A-Z],[^a-Z]等,匹配任意一个字符
2. ls /[u]* 显示已u开头的文件或文件夹。

() 与 (反引号) - 在括号中的命令列表, 将会作为一个子shell来执行。

  1. 通常与 ( c o m m a n d ) 一 起 使 用 , 效 果 如 ‘ c o m m a n d ‘ , 返 回 执 行 命 令 的 结 果 v a r r e s u l t = (command)一起使用,效果如`command`,返回执行命令的结果 var result = (command)使commandvarresult=(call function);
  2. 命令组。括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括 号之间不必有空格。
  3. 命令替换。等同于cmd,shell扫描一遍命令行,发现了 ( c m d ) 结 构 , 便 将 (cmd)结构,便将 (cmd)便(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令。有些shell不支持,如tcsh。
    初始化数组。如:array=(a b c d)。

[] - test和[]中可用的比较运算符只有==和!=,两者都是用于字符串比较的,不可用于整数比较,整数比较只能使用-eq,-gt这种形式。无论是字符串比较还是整数比较都不支持大于号小于号。如果实在想用,对于字符串比较可以使用转义形式

[[]] - 就是条件表达式。在bash中,字符串比较用 > < != == <= >= ,只是在[]中 < >需要转义;对于数值比较.用 -lt -le -eq -ge -gt 来比较,与[[]]中表达不太一样,[[]]中表达式不需要转义。在[ ] 中的 < > 需要用转义 < >,如果有多个表达式,在[[ ]] 中用 && || 来组合,而[] 中是用 -a -o 来组合

(()) - 将表达式转换成C语言运算规则进行计算

  1. if((i>5)) 条件语句,等价于if[ i -gt 5]
  2. 也可重定义变量值,比如 a=5; ((a++)) 可将 $a 重定义为6.
  3. test和[]中可用的比较运算符只有==和!=,两者都是用于字符串比较的,不可用于整数比较,整数比较只能使用-eq,-gt这种形式。无论是字符串比较还是整数比较都不支持大于号小于号

$() - 通常我们使用$ ((call function parameters)), $ (call function parameters) 获得函数返回值
$(())与$[] 用来作表达式运算
${} 用来作变量替换用的啦。一般情况下,$var 与 ${var} 并没有啥不一样。但是用 ${ } 会比较精确的界定变量名称的范围。

1、${var_name}等价于$var_name(通常用这种简写方式)
2、$(var:-default) 和$(var-default)
      $(var:-default)   当var为空或未定义时整个表达式的值为default
      $(var-default)    当且仅当var未定义时整个表达式的值为default
3、$(var:=default) 和$(var=default)
      $(var:=default)   当var为空或未定义时整个表达式的值为default,并且将var的值设置为default
      $(var=default)    当且仅当var未定义时整个表达式的值为default,并且将var的值设置为default
4、$(var:?default) 和$(var?message)
      $(var:?message)   当var为空或未定义时,打印错误信息,信息内容为message表示的值
      $(var?message)    当且仅当var未定义时,打印错误信息,信息内容为message表示的值
5、$(var:+default) 和$(var+default)
      $(var:+default)   当var已定义且不为空时整个表达式的值为default
      $(var+default)   当var已定义时真个表达式的值为default(不管var是否是空) 

IFS的介绍

Shell 脚本中有个变量叫IFS(Internal Field Seprator) ,内部域分隔符
Shell 的环境变量分为set, env 两种,其中 set 变量可以通过 export 工具导入到 env 变量中。其中,set 是显示设置shell变量,仅在本 shell 中有效;env 是显示设置用户环境变量 ,仅在当前会话中有效。换句话说,set 变量里包含了env 变量,但set变量不一定都是env 变量。这两种变量不同之处在于变量的作用域不同。显然,env 变量的作用域要大些,它可以在 subshell 中使用。
IFS 是一种 set 变量,当 shell 处理"命令替换"和"参数替换"时,shell 根据 IFS 的值,默认是 space, tab, newline 来拆解读入的变量,然后对特殊字符进行处理,最后重新组合赋值给该变量。
二、 IFS的简单实例
1 查看IFS的值
echo “$IFS”

echo “KaTeX parse error: Undefined control sequence: \n at position 102: …是Tab,"012"是换行符"\̲n̲" 。最后一个 012 是因为…IFS #保存原始值
IFS=”" #改变IFS的值


IFS=$OLD_IFS #还原IFS的原始值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值