显示本地变量
echo $变量名 或echo (变量名)
eg # num=2
#echo ”this is $numnd“
#num=2
#echo “this is ${num}nd”
eg2
要将name的内容多出”yes“两种方法
#name=“KaTeX parse error: Expected 'EOF', got '#' at position 10: name”yes #̲name={name}yes
unset (释放本地变量)
格式:unset 变量名
eg3
在子shall下变量的作用范围
aa=11
bash
echo $aa (错误)
bash
aa=11
echo $aa
exit(退出子shell)
eg4
环境变量在shell脚本执行时就已经定义了
环境变量可以用于所有用户进程
PS1:主提示符,在特权用户下,默认的主提示符是#;
在普通用户下,默认的主提示符是$
PS1变量的特殊符号
PS1=‘[\u@\h\w]$’
\u:当前用户的账号名称
\h:仅取主机名的第一个名字
\w:工作目录名称,仅列出最后一个目录名
$:提示符,如果是root用户就是#否则就是$
#PATH:决定了shell将那些目录中寻找命令或程序,PATH的值是一系列目录
linux修改PATH变量
只想对本次登录有效的话
PATH=¥PATH<路径1><路径2>.。。。。
永久有效在bashrc里面加上这句话
export
用export可以把本地变量设置为环境变量
格式:export 变量名
也可以在给变量赋值的同时使用export命令
export 变量名=变量值(若等号两边有空格,则必须用引号括起来eg hello=”hello空格world“)
n1=11
n2=22
export n1
bash
echo $n1(显示11)
echo $n2(不显示22)
特殊变量
某些变量在一开始执行就被设定且不在改变,他们就被称为特殊变量
用户只能根据shell使用这些变量而不能重新定义它们,所有特殊变量都是由$和另一个符号组成
$# :存储shell程序中命令参数的个数
$?:存储shell中上一个程序执行的返回值(0表示执行成功,非0错误)
$[1-n]:存储【1-n】个命令行参数
$0存储shell程序自己的名称
$*:存储shell脚本的所有参数(不包含$0)
$$:存储shell脚本的进程号(pid)
设计脚本***要求如下
当输入bash ./***2012 回车显示2012年头三个月的月历
#!/bin/bash
cal 1 $1
cal 2 $1
cal 3 $1
shift命令
可以移动命令行参数。运行shift后,
把每个参数向左移动一个位置,$2 $3 …依次变为$1 $2 …,原先的$1丢掉
#!/bin/bash
echo $1 $2
shift
echo $1 $2
特殊符号
引用符号
在bash中,许多字符有特殊含义,如果希望忽略某些字符含义
可以使用一种”引用“通知shell 暂时忽略被引用字符的特殊含义,将其作为普通字符处理
~:用户主目录
`:命令替换
#:解释,后面的数据不执行
$:一个变量名的开头
&:将命令在后台运行
*:通配符,代表任何字符
(:子shell的开始
):子shell结束
\:转义符号
|:管道
?:代表任何单一字符
<:输入重定向
:输出重定向
':单引号(不具有变量置换的功能)
”:双引号(具有变量置换的功能)
/:目录符号,路径分割
;:命令分割符
在shell中的三种引用符号
转义符:
单引号:’
双引号:“
转义符:
\放在shell特殊字符之前,则shell忽略该字符的特殊含义
用这种方式时,必须在每个欲忽略其特殊含义的特殊字符前加\字符
单引号:’
将字符放在一对单引号之间,则单引号内的所有字符的特殊含义都被忽略
而只作普通字符解释
命令替换符”“ 命令替换符”
“(反引号)的作用跟引用字符的作用相反
反引号括起来的字符被shell解释为命令行,在执行shell时,首先执行该命令行,
并以它的标准输出结果取代整个反引号(包括两个反引号)部分