变量
基本使用
Bash 里,每个变量的值都是字符串。变量名是区分大小写的。要输出变量值,可以用下面方法中的任意一个:
1 | var="some test string." |
上面说到变量值都是字符串,那么如果想知道字符串的长度,可以通过 #
符号来获取:
1 | var="some test string." |
环境变量
** 环境变量是未在当前进程中定义,而从父进程中继承而来的变量。**
用 env
命令,可以查看当前系统中、所有与该终端相关的环境变量。
常见环境变量
** SHELL **
识别当前所用的是哪种 shell:
1 | echo $0 # 输出 -zsh |
我使用的是 oh my zsh。如果用的是默认的 bash shell,应该会输出 /bin/bash
。
** UID、GID **
当前登录用户的ID,以及其所属分组,分别可以通过 UID、GID 来查看。root 用户的 UID/GID 都是 0。因此可以通过这个来判断当前用户是否为超级用户。
1 | if [ $UID -ne 0 ]; then |
上面的脚本,-ne
表示“不等于”的意思(not equal to)。而 [
、]
及其中间的内容,属于条件表达式(Conditional expressions)的一种。条件表达式可以用来测试文件属性,或者对字符串、算术进行比较。
获取程序的返回值
假设我们有这样一个 C++ 程序:
1 | #include<iostream> |
使用 g++ 编译后执行。想要获得该程序的返回值(也就是0),可以这样:
1 | # 假设编译后得到的可执行文件为 a.out |
涉及的概念是“退出状态”:
当一个命令发生错误并退回时,它会返回一个非0的退出状态;而当命令成功完成后,它会返回数字0。退出状态可以从特殊变量
$?
中获得(在命令执行之后立刻运行echo $?
,就可以打印出退出状态)。