上午:
变量:
定义变量 name="mh"
echo $name
取消变量 name=
echo $HOME
echo $SHELL
启动其他bash:
csh
bash
echo $SHLVL 查看开了几个shell
exit 退出shell
pstree | grep -A2 -B2 bash 显示bash的前两行和后两行
HEHE="haha"
export HEHE 把普通变量转换成环境变量
* 本地变量只能在本shell中使用,子shell不能使用
环境变量本shell和子shell都能使用
定义环境变量的方法 export 变量名=值**
建立子shell :直接在shell中 csh bash
env 产看系统的环境变量
vim /etc/profile 系统环境变量的配置
vim ~/.bash_profile 用户配置的环境变量
bash 以普通方式建立shell启动
bash -l(login) 以登录的方式启动shell
1.登录时候加载的顺序
/etc/profile
/etc/bashrc
~/.bashrc
~/.bash_profile
2.如果以启动shell的方式打开终端
只启动 /etc/bashrc
~/.bashrc
3.退出登录shell执行 ~/.bash_logout
vim `which startx`
- -
shell脚本:
startx 在图像界面没有启动的时候启动图形界面
#!/bin/bash 必须写在第一行,用于告诉系统该shell脚本用在那种shell解析
# 表示注释
执行shell的方式
./first.sh 在子进程执行
bash first.sh 在子进程执行
. first.sh 在本进程执行
source first.sh 在本进程执行
shell 可以带参数
$1 $2 ...接受参数
${1} ${2}...
$? 上一条命令执行执行成功返回0
上一条命令执行不成功返回非0
$$ 获得当前进程的pid
$# 命令行参数个数
$* 以单个字符串的形式接受所有命令行参数
下午:
测试文件:
[ 测试条件 ] 真 0 假 1
-f 测试文件是否存在
-d 目录
-l 符号链接
-x 可执行
-w 可写
-r 可读
-s 测试文件大小是否大于0
测试字符串:
[ = ]
!=
-z 字符串空,返回真
-n 字符串不为空返回真
测试数字:
-eq =
-gt >
-ge >=
-lt <
-ne !=
-le <=
[ 2 -eq 3 ]
echo $?
例 [ -f a.txt ];echo $?
[ -f info.sh ];echo $?
[ "$USER"="root" ];echo $?
[ "this"="is" ]
算数表达式:
1:
[
n + 1 ]
n="2"
m=$[ $n+1 ]
echo $m
2:
$(( )) #不写成$()的原因是$()等价` `
3:
expr 4 + 5 也可以写为
n=`expr 4 + 5`
echo $n
expr 4 \* 5
1 && 2 1为真 则2执行
1 || 2 1为真 则2不执行
语句:
1: if [ "&AA" ="root" ];then
echo "nihao $AA"
fi
2: case $val(循环变量) in
1)
****;;
2)
****;;
*)
****;;
esac
3: for (( 1 ; 2 ; 3 ))
do
done
4: for val in list #每次循环从list中取一个值赋给val
do
done
list 可以是
5: while expr(表达式)
do
cmd
done
函数:
函数名()
{
}