# Shell 命令

# 简介

Shell 既是一种命令语言,又是一种程序设计语言。我们说的 Shell 通常为 Shell 脚本。

Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。

Linux 的 Shell 种类众多,常见的有:

  • Bourne Shell(/usr/bin/sh 或 /bin/sh)
  • Bourne Again Shell(/bin/bash)
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • Shell for Root(/sbin/sh)

我们最常使用的和本文介绍的是 Bash,即 Bourne Again Shell。在通常情况下,我们不区分 Bourne Shell 与 Bourne Again Shell。

# 变量

采用等号可以声明变量并赋值,但是等号两侧不能留有空格。此外,也可以直接声明一个变量。

l
var_1="variate"
var_2

# 命名规则

命名只能使用英文字母数字下划线,且不能以数字开头。

# 变量的性质

在变量名前加 raadonly 可以将变量声明为只读变量。

# 变量使用

使用变量时,在变量名前加美元符号 $ 。此外,最好在变量名两侧加上花括号表示变量名整体 (在不引起歧义的情况下可以省略)。例如下面的代码:

l
for skill in Ada Coffe Action Java; do
    echo "I am good at ${skill}Script"
done

若不添加花括号,则解释器认为 skillScript 是一个变量名,产生歧义。

如果希望删除变量,则在变量前加入命令 unset ,例如:

l
unset var_1

只读变量不可以被删除。

# 字符串

# 参数

Shell 中采用 ${num} 表示第 num 个参数。例如 ${10} 表示传入的第 10 个参数。此外,对于 1 至 9,可以省略花括号。

对于参数,我们常见的操作有以下几种:

表达式含义
$$Shell 本身的 PID (ProcessID)
$!Shell 最后运行的后台进程的 PID
$-显示 Shell 使用的当前选项
$?最后运行的命令的结束代码 (返回值),一般 0 表示正确, 1 表示错误
$*$@所有参数列表
$#参数个数
$0Shell 本身文件名

# Reference

主要参考菜鸟教程