SHELL 入门
##常用环境变量
echo $PATH #环境变量
echo $HOME #当前用户目录
echo $SHELL #所用的bash shell的路径
echo $PWD #当前脚本路径
echo $USER #当前用户名
echo $$ # 当前进程号
Shell脚本的执行
1.输入脚本的绝对路径或相对路径
2.bash或sh +脚本
3.在脚本的路径前再加". " 或source
区别:第一种和第二种会新开一个bash,不同bash中的变量无法共享。但是使用. ./脚本.sh 这种方式是在同一个shell里面执行的。
变量
A=`ls -la` #将执行结果返回给变量A
aa=123
cc="$aa"456
dd=${aa}789 #方便在字符串中确定变量的边界
echo $cc #输出 123456
echo $dd #输出 123789
NUM=10
SUM="$NUM hehe"
echo $SUM #输出10 hehe
SUM2='$NUM hehe'
echo $SUM2 #输出 $NUM hehe
unset NUM #销毁变量
echo $NUM
命令行传参
普通用法
执行 ./hellow.sh a b c d
echo $1 #输出 a
echo $2 #输出 b
echo $3 #输出 c
echo $* #输出 a b c d
echo $@ #输出 a b c d
echo $# #输出 4
for (( index=0; index <= $#; index++ ))
do
echo ${!index}
done
1.$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号" “包含时,都以”$1" “ 2 " … " 2" … " 2"…"n” 的形式输出所有参数;
2.当它们被双引号" “包含时,”$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;
3."$@" 会将各个参数分开,以"$1" “ 2 " … " 2" … " 2"…"n” 的形式输出所有参数。
4.$? 执行上一个命令的返回值 执行成功,返回0,执行失败,返回非0(具体数字由命令决定)
5.$$ 当前进程的进程号(PID),即当前脚本执行时生成的进程号
6.$!后台运行的最后一个进程的进程号(PID),最近一个被放入后台执行的进程 &
shift用法
until [ $# -eq 0 ]
do
echo "第一个参数为: $1 参数个数为: $#"
shift
done
别的有用的指令
wait #等待命令执行完成
expect 处理交互式命令