- 变量命名时不能用=号两边不能有空格
- shell脚本中的的单引号和双引号作用不同,单引号会将特殊符号当作普通符号处理,而双引号会将变量替换为其真是内容:
isaac@hp:~/Playground$ echo "lang is $LANG"
lang is en_US.UTF-8
isaac@hp:~/Playground$ echo 'lang is $LANG'
lang is $LANG
- 使用\来转义特殊字符
- 使用
$(command)
或者`command`来在命令中使用其他命令的结果:
isaac@hp:~/Playground$ echo "i'm $(whoami)"
i'm isaac
isaac@hp:~/Playground$ echo "i'm `whoami`"
i'm isaac
- 变量内容扩展:
MYPATH="$PATH":/whatever/you/want
或者 MYPATH=${PATH}:/whatever/you/want
- 通过
export var
使得变量可以在其他程序中访问
- 通过
unset var
取消变量
isaac@hp:~/Playground$ echo $MYNAME
isaac young2
isaac@hp:~/Playground$ unset MYNAME
isaac@hp:~/Playground$ echo $MYNAME
env
列出所有环境变量
set
列出所有变量包括环境变量和用户自定义变量,其中有几个比较重要的变量
PS1
: 命令行提示符的格式
PS2
: 使用\\
换行后的提示符通常为>
$
: 当前shell程序的pid echo $$
?
: 上次程序运行的返回值,例如按下[ctrl] + c
后执行echo $$
输出130
表示程序强制终止
read -p '提示信息' -t 时间 variable
将用户输入的值保存到variable
中,-t表示限制时间在多少秒以内
please input your name:isaac
isaac@hp:~/Notes/linux$ echo $yourname
isaac
declare
未指定参数时与set
功能一致,列出所有变量,若指定参数则用来 变量的声明, declare -aixr variable
:
-a
: array, 将变量声明为数组类型
-i
: integer, 将变量声明为整数类型
-x
: export, 将变量声明为环境变量
-r
: readonly, 将变量声明为只读
-p
: print, 打印出变量的生命语句
+[xi]
: 取消对应的类型声明:
isaac@hp:~/Notes/linux$ declare -i sum=9
isaac@hp:~/Notes/linux$ declare -p sum
declare -i sum="9"
isaac@hp:~/Notes/linux$ declare +i sum
isaac@hp:~/Notes/linux$ declare -p sum
declare -- sum="9"
变量替换的特殊语法