bash相关问题总结

bash相关问题总结

七月专题 - -

关于bash中的 <<< 的含义

在StackOverflow中有个例子非常的详细。。先贴连接 What does <<< mean? 以下是我的渣翻译,可能会翻译错。。

我们可以这样对字符串进行处理

1
echo "$string" | command

然而在bash中,这样写(使用管道)就相当于把命令分到子shell中进行处理,考虑这种情况

1
2
echo "hello world" | read first second
echo $second $first

它会输出一个空行,子shell成功的读到了两个变量,但是随后子shell退出,两个变量就消失掉了。所以输出是没有结果的。应当这样写

1
2
3
4
echo "hello world" | {
read first second
echo $second $first
}

但是这样还是没有解决这种分成子shell去执行的尴尬。这时候就能够使用 <<<

1
read first second <<< echo "hello world"

关于${!var} var是变量名

使用${!var}的作用是当ver不存在的时候会原样输出,也就是显示${var}

关于bash中的trap命令的使用

trap可以强化bash脚本,让脚本更加稳定。

trap的使用方式

trap有三种使用方式,对应这不同的对信号的回应方式。

  1. trap ”something“ signal

其中”something“ 是在接受signal信号之后作出的命令

  1. trap signal

trap不指定任何命令,接受信号的默认操作,默认操作是结束进程的运行

  1. trap “” signal

trap命令指定一个空命令串,允许忽视信号

常用信号

  • HUB(1) 挂起,通常因终端掉线或用户退出而引发

  • INT(2) 中断,通常因按下Ctrl+C组合键而引发

  • QUIT(3) 退出,通常因按下Ctrl+/组合键而引发

  • ABRT(6) 中止,通常因某些严重的执行错误而引发

  • ALRM(14) 报警,通常用来处理超时

  • TERM(15) 终止,通常在系统关机时发送

  • KILL(9) 杀死进程

  • STOP 停止进程执行

更过的信号 可以使用 trap -l 命令来查看

-------------本文结束感谢您的阅读-------------

本文标题:bash相关问题总结

文章作者:NanYin

发布时间:2018年07月12日 - 17:07

最后更新:2019年08月12日 - 13:08

原始链接:https://nanyiniu.github.io/2018/07/13/2018-07-12-bash%E9%97%AE%E9%A2%98%E6%80%BB%E7%BB%93/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。