From 6892302f9303e5d503948390e36fad856a882553 Mon Sep 17 00:00:00 2001 From: Timothy Qiu Date: Wed, 19 Oct 2016 21:57:47 +0800 Subject: [PATCH] Updates zh translation --- README-zh.md | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/README-zh.md b/README-zh.md index ebc4bdb..7dc460b 100644 --- a/README-zh.md +++ b/README-zh.md @@ -137,7 +137,7 @@ # continue in original dir ``` -- 在 Bash 中,要注意其中有许多形式的扩展。检查变量是否存在:`${name:?error message}`。例如,当 Bash 脚本需要一个参数时,可以使用这样的代码 `input_file=${1:?usage: $0 input_file}`。数学表达式:`i=$(( (i + 1) % 5 ))`。序列:`{1..10}`。截断字符串:`${var%suffix}` 和 `${var#prefix}`。例如,假设 `var=foo.pdf`,那么 `echo ${var%.pdf}.txt` 将输出 `foo.txt`。 +- 在 Bash 中,要注意变量展开的形式有很多。检查变量是否存在:`${name:?error message}`。例如,当 Bash 脚本只需要一个参数时,可以使用这样的代码 `input_file=${1:?usage: $0 input_file}`。在变量为空时使用默认值:`${name:-default}`。如果你要在之前的例子中再加一个(可选的)参数,可以使用类似这样的代码 `output_file=${2:-logfile}`,如果省略了 $2,它的值就为空,于是 `output_file` 就会被设为 `logfile`。数学表达式:`i=$(( (i + 1) % 5 ))`。序列:`{1..10}`。截断字符串:`${var%suffix}` 和 `${var#prefix}`。例如,假设 `var=foo.pdf`,那么 `echo ${var%.pdf}.txt` 将输出 `foo.txt`。 - 使用括号扩展(`{`...`}`)来减少输入相似文本,并自动化文本组合。这在某些情况下会很有用,例如 `mv foo.{txt,pdf} some-dir`(同时移动两个文件),`cp somefile{,.bak}`(会被扩展成 `cp somefile somefile.bak`)或者 `mkdir -p test-{a,b,c}/subtest-{1,2,3}`(会被扩展成所有可能的组合,并创建一个目录树)。 @@ -146,6 +146,13 @@ diff /etc/hosts <(ssh somehost cat /etc/hosts) ``` +- 编写脚本时,你可能会想要把代码都放在大括号里。缺少关括号的话,代码就会因为语法错误而无法执行。如果你的脚本是要放在网上供人下载的,这样的写法就体现出它的好处了,因为没有完全下载的脚本无法执行: +```bash +{ + # 在这里写代码 +} +``` + - 了解 Bash 中的“here documents”,例如 `cat <logfile 2>&1`。通常,为了保证命令不会在标准输入里残留一个打开了的文件句柄导致你当前所在的终端无法操作,添加 `