环境变量
一些命令
shell脚本中经常出现各种环境变量,因此要写脚本,必须先来了解环境变量.常见的处理环境变量的命令,列举在下面
set 用来显示本地变量
env 用来显示环境变量
export 用来显示和设置环境变量
source 后面跟一个文件,可以直接执行文件里的脚本命令并更新
常见的环境变量
位置参数
相当于C语言中, main函数的argv数组, 这里用 $num 表示,其中 num 是指代一个数字. 见下面的程序实例
# foot.sh
#!/bin/sh
echo "#0 $0"
echo "#1 $1"
echo "#2 $2"
echo "#3 $3"
echo "#4 $4"
echo "#5 $5"
echo "#10 ${10}"# 注意这里的花括号
列举一些变量
列举一些常见的变量, 可以通过 echo 直接查看
PWD当前路径, bash 的 pwd 命令即是输出该路径
OLDPWD前一个目录
PATHshell的命令路径
HOME用户的家目录
SHELL当前的shell
USER用户名
UID用户 id 可以参考 /etc/passwd
PPID创建当前进程的进程号,即父进程号
PS1提示符变量
引用
一般字符串可以不用引号,加了引号(单引号或者双引号,都是为了屏蔽特殊字符的特殊意义,如星号等)
"1 is $1"
双引号
引用除了美元符号($) 反引号(``) 反斜杠( \ )的字符串,可以输出单引号
'1 is $1'
单引号
单引号里面的字符串会原样输出,包括双引号,但是不能输出单引号
varA=`pwd`
反引号
讲反引号里面的内容解释为 shell 命令 注: ${pwd} 和 `pwd` 的意思是一样的, 返回的结果是一个字符串,而且会删除换行符
比较
把表达式放在中括号里,如 ["$num1" -eq 20] 条件满足就返回 0
比较运算符
-eq
euqal
==
-ge
greater or equal
>=
-gt
greater
>
-le
less or equal
<=
-lt
less than
<
-ne
not equal
!=
文件操作符
-d file
directory
是否为 目录
-e file
exist
是否 存在
-f file
file
是否为 普通文件
-r file
readable
是否 可读
-s file
文件长度是否不为零
-w file
writable
是否 可写
-x file
executive
是否 可执行
-L file
linkable
是否 是符号化链接
逻辑运算符
!expression
逻辑非
expression1 -a expression2
逻辑与 and
expression1 -o expression2
逻辑或 or