还有一个额外的最后一件关于 if 的事:我今天学到是不须要经由过程[[或者[去应用 if 语句:任何有效的敕令都邑工作。 所以你可以如许做
if grep peanuts food-list.txtthenecho "allergy allert!"fi
函数不是那么难
在 bash 中定义和调用函数(特别是没有参数)是异常轻易的。
my_function () { echo "This is a function"; }my_function #调用函数老是引用你的变量
X="i am awesome"Y="i are awesome"if [ $X = $Y ]; then echo awesomefi
Bash 解释这个 if 语句为 if [ i am awesome == i are awesome],这是6个字符串 (i, am, awesome, i, are, awesome) 无意义的 if 语句。 精确的写法是
X="i am awesome"Y="i are awesome"if [ "$X" = "$Y" ]; then #我放置引号因为我知道bash会反叛我,如不雅我不放的话 echo awesomefi
有些情况下,只要应用 $ X 而不是 “$ X” 就可以,然则您可以知道何时可以,何时不可吗? 我肯定不克不及。 老是引用你的 bash 变量,你会更快活的。
返回代码, &&, 和 `||
你可以用 && 实现!
例如:create_user && make_home_directory。 这将运行 create_user ,检查返回代码,然后仅在返回代码为0时运行 make_home_directory。
export MYVAR=2
这与 create_user; make_home_directory 不合,无论 create_user 的返回代码是什么,都将运行 make_home_directory。
你也可以应用create_user || make_home_directory,只有create_user运行掉败才运行make_home_directory 。 这在技巧范畴中异常奇妙。
后台过程
杂项事宜(“老是引用你的bash变量”)
long_running_command &
如不雅你后来懊悔将过程放到后台,并欲望把它带调回前台,你可以用 fg 来做到这一点。 如不雅不指荷琐过程,您可以应用 jobs 查看所有后台过程。因为某种原因,fg 须要一个 “job ID”(这就是 jobs 打印输出的)而不是一个 PID。 谁知道 Bash 为什么如许子呢。
别的,如不雅你在后台运行太多的过程,内置等待敕令将比及它们都返回。
说到懊悔 - 如不雅你不当心在缺点的终端启动一个过程,Nelson Elhage 有一个很棒的项目叫做 reptyr ,可以保存你的过程并将其移到屏幕会话或者某些其他器械中。
【编辑推荐】
- Bash脚本15分钟进阶教程
- 这根本不是 BASH 的 BUG,是特点!
- 感慨号:bash 的汗青扩大功能
- 如安在 Linux 上运行敕令前临时清空 Bash 情况变量
- 2016年收入最高编程说话 Bash说话裁缝外“黑马”
推荐阅读
代码绑缚我很早就写过几个关于 Javascript 脚本的绑缚的帖子,人们可能认为我是猖狂的热衷于应用绑缚,然则我认为我是不由自立的,因为它是异常有趣的:-)。有几篇我写的文┞仿是关于实现最>>>详细阅读
本文标题:编写快速安全Bash脚本的建议
地址:http://www.17bianji.com/lsqh/34763.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示