bash 基础

一些小的知识点:
  1.  ‘(‘,’)’ 是元字符, ‘{‘,’}’ 是保留字,所以圆括号两边可以没有空格,而花括号两边必须有空格
  2. ((expression))  是一个算数表达式;  [[ expression ]] 是一个条件表达式
  3. &>word     >&word 都等价于 >word 2>&1 ; 推 荐 使 用 第 一 种
  4. 将 字 符 放 在 单 引 号 之 中 , 将 保 留 引 用 中 所 有 字 符 的 字 面 意 义 。 单 引 号 不 能 包 含 在 单 引 号 引 用 之 中 , 即 使 前 面 加 上 了 反 斜 杠
  5. 将 字 符 放 在 双 引 号 中 , 同 样 保 留 所 有 字 符 的 字 面 意 义 , 例 外 的 情 况 是 $, 和\。 字 符 $ 和  在 双 引 号 中 仍 然 具 有 特 殊 意 义 。 反 斜 杠 只 有 后 面 是 下 列 字 符 时 才 有 特 殊 意 义 : $\, 或 <newline>. 双 引 号 可 以 包 含 在 双 引 号 引 用 中 , 但 要 在 前 面 加 上 一 个 反 斜 杠
  6. 双 引 号 引 用 字 符 串 前 面 加 上 一 个 $ 符 号 将 使 得 这 个 字 符 串 被 根 据 当 前 语 言 环 境 (locale) 来 翻 译
  7. getopts 是一个内建命令

 

练习

for (( expr1 ; expr2 ; expr3 )) ; do list ; done

for name [ in word ] ; do list ; done

select name [ in word ] ; do list ; done

case word in [ [(] pattern [ | pattern ] … ) list ;; ] … esac

 

圆括号的用法

  1. 子shell:

    命令在子shell中执行,不影响当前shell环境,当前shell的当前环境不发生变化
  2. 子shell求值

    ls 的结果赋值给files变量
  3. 算术表达式

    注意: 不能写作: (($i++)),因为如果i=1,替换之后为((1++)) ,显然没法运算,但是:
  4. 数组

    arr是个数组,包含当前目录下面的所有文件名

    str 是个字符串

    arr是一个包含字符串ls的数组
  5. 字符串替换

    注意: 该特性在 GNU bash,版本 4.4.19(1)-release (x86_64-pc-linux-gnu) 上测试通过,在 GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu) 上测试不通过

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据