1.shell中的特殊位置参数变量
$0:获取当前执行的shell脚本的文件名,如果执行脚本包含了路径,那么就包括脚本路径
$n:获取当前执行的shell脚本的第n个参数,n=1..9,当n为0时表示脚本的文件名;如果n大于9,则用大括号括起来
比如${10},接的参数以空格隔开
$#:获取当前执行的shell脚本后面接的参数的总个数
$*:获取当前shell脚本所有传参的参数,不加引号和$@相同;如果给$*加上双引号,如"$*",则表示把所有的参数视
为单个字符串,相当于"$1 $2 $3"
$@:获取当前shell脚本所有传参的参数,不加引号和$*相同;加上双引号,如"$@",则表示将所有的参数视为不同的
独立字符串,相当于"$1" "$2" "$3" "..." 这是将多参数传递给其他程序的最佳方式,因为它会保留所有的内嵌
在每个参数里的任何空白。
2.shell进程中的特殊状态变量
$?:获取执行上一个指令的执行状态返回值(0为成功,非0为失败),常用
$$:获取当前执行的shell脚本的进程号(PID),不常用
$_:获取在此之前执行的命令或脚本的最后一个参数,不常用
3.bash shell内置变量命令
bash shell包含一些内置命令。这些内置命令在目录列表里是看不见的,它们由shell本身提供。常用的内部命令有:
echo、eval、exec、export、read、shift。
echo:在屏幕上输出信息
命令格式:echo args
参数:
-e:解析转义字符
转义字符:
\n:换行
\r:回车
\t:制表符(tab)
\b:退格
\v:纵向制表符
eval:
命令格式:eval args
功能:当shell程序执行到eval语句时,shell读入参数args,并将它们组合成一个新的命令,然后执行
exec:
[root@www script]# vim exec.sh
[root@www script]# cat exec.sh
#!/bin/bash
exec </script/1.txt
while read line
do
echo $line
done
echo ok
[root@www script]# seq 5 > 1.txt
[root@www script]# cat 1.txt
1
2
3
4
5
[root@www script]# sh exec.sh
1
2
3
4
5
ok