专栏名称: OSC开源社区
OSChina 开源中国 官方微信账号
目录
相关文章推荐
程序员的那些事  ·  趣图:真 AI、真 LLM、真 API… ·  2 天前  
蚂蚁技术AntTech  ·  天玑实验室全新升级 聚焦“AI+产业创新” ·  18 小时前  
玉伯  ·  通过 YouMind,我终于知道我的 ... ·  昨天  
阿里云云栖号  ·  一周AI大事件 ·  2 天前  
大淘宝技术  ·  阿里淘天T-Star Lab ... ·  2 天前  
51好读  ›  专栏  ›  OSC开源社区

编写快速安全 Bash 脚本的建议 | 翻译

OSC开源社区  · 公众号  · 程序员  · 2017-04-11 08:31

正文

请到「今天看啥」查看全文


要设置环境变量,您需要使用export关键字:

设置环境变量时,所有子进程将看到该环境变量。所以如果你运行export MYVAR=2; python test.py,python程序将MYVAR设置为2。

第二种变量是全局变量。同样像上面那样赋值。

在其他编程语言中他们表现得像全局变量。

还有局部变量,它们的作用域只能存在于bash函数中。 我基本上从来没有使用过这样的函数(不像我写的其他编程语言),我从来没有使用过局部变量。


for循环


以下是我在bash中编写循环的方法。 此循环将从1打印到10。

如果你想用一行代码写这个循环,可以这样写:

我觉得这是不可能记住的(你要怎么记住在 seq 1 10 之后有一个分号,但是在 do 之后却没有了),所以我不会去记它。

你也可以写while循环,但我从来没有这样写过。

有个很酷的事情是你可以遍历另一个命令的输出。seq 1 10 将数字从1到10(每行一个)打印,这个for循环只是提取该输出并遍历它。我就经常用这种方法。

您也可以使用反引号或$()来插入命令的输出。


if 语句


在 bash 中的 If 语句是相当让人讨厌去记它。你必须放在这些方括号中,而在方括号之间必须有空格,否则它不起作用。[[ 和 [ 方括号(双/单) 都工作。 这里我们真正进入 bash 的奇怪领域:[ 是一个程序 (/usr/bin/[) 但 [[ 是 bash 语法。[[ 更好。

此外,您可以检查“此文件存在”,“此目录存在”等内容。例如,您可以检查文件 /tmp/awesome.txt 是否存在,如下:

这通常是有用的,但我必须每次查找语法。
如果您想尝试用命令行,可以使用 test 命令,例如 test -e /tmp/awesome.txt 。 它成功会返回0,否则返回错误。
最后一件事是为什么[[比[好:如果你使用[[,那么你可以使用

还有一个额外的最后一件关于 if 的事:我今天学到是不需要通过[[或者[去使用 if 语句:任何有效的命令都会工作。 所以你可以这样做:


函数不是那么难


在 bash 中定义和调用函数(特别是没有参数)是非常容易的。







请到「今天看啥」查看全文