1.特定变量参数
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的进程ID号
$@ 与$#相同,但是使用时加引号,并在引号中返回每个参数
$- 显示shell使用的当前选项,与set命令功能相同
$? 显示最后命令的退出状态,0表示没有错误,其他值表明有错误
2.
#vi test1.sh
#!/bin/bash
echo"这个脚本的名字是$0"
echo"第1个参数是$1"
echo"第2个参数是$2"
echo"第3个参数是$3"
echo"第4个参数是$4"
echo"第5个参数是$5"
echo "当前的PID是$$"
#chmod +x test1.sh
#./test1.sh a b c
3.
#vi test1.sh
#!/bin/bash
echo"这个脚本的名字是$0"
echo"第1个参数是$1"
echo"第2个参数是$2"
echo"第3个参数是$3"
echo"第4个参数是$4"
echo"第5个参数是$5"
echo "参数个数为:$#"
#chmod +x test1.sh
#./test1.sh a b c d
#./test1.sh a b
4.
#mkdir abc
#echo $?
返回0建立成功。
5.
#mkdir /root
#echo $?
返回不是0因为/root已经存在了!!!
6.
#e=""
#echo "e=$e"
#let "e+=1"
#echo "e=$e"
7.
#echo "f=$f"
#let "f+=1"
#echo "f=$f"
8.
#vi test2.sh
echo "the name of this script is \"$0\"."
echo "the name of this script is \"`basename $0`\"."
basename 只取当前的名字去掉./
echo "the name of this script is \"$0\"."
9.
#vi test2.sh
#!/bin/bash
if[-n "$1"]
then
echo "Parameter #1 is $1"
fi
if [-n "${10}"] //大于9的参数必须出现在{}中
then
echo "Parameter #10 is ${10}"
fi
#chmod +x test2.sh
#./test2.sh 1 2 3 4 5 6 7 8 9 book 11
10.
#echo $(2#101011) //二进制的101011
输出43
11.
case "$variable" in
abc) echo "\$variable=abc";;
xyz) echo "\$variable=xyz";;
esac
12.
#ls -l | grep ^...x //显示第4位是x的文件
13.
#let "var=((a=9,15/3))"
, 只返回最后一项 5
#echo $var
14.
冒号:与true相同
#vi test3.sh
#!/bin/bash
while : //当条件为真
do
echo "welcome book"
sleep 5
done
15.
#let b=2**10
#echo $b
1024
16.
$ 在正则表达式作为行结束符
${} 参数替换
$* 位置参数
$@ 位置参数
$? 退出状态变量 $?保存一个命令
一个函数或者脚本本身的退出状态
$$ 进程ID变量,这个$$变量保存运行脚本进程ID
() 命令组 ,数组
#a=welcome
#(a=welcome)括号中的命令作为一个子shell来运行
#echo $a
output:welcome
17.
#cat {a.sh,b.sh}>c.sh
{} 代码块,又被称为内部组
[] test //主要用于条件测试 test
18.
#vi test4.sh
#!/bin/bash
x=3;y=2
if [ $x -lt $y];then //lt是大于的意思
echo "x less y"
else
echo "x not less y"
fi
19.
#vi test5.sh
#!/bin/bash
x=3;y=2
if $x -lt $y;then //lt是大于的意思
echo "x less y"
else
echo "x not less y"
fi
方括号等于test
20.
\<和\> 单词的边界符
21.
&后台执行
#sleep 5
#sleep 5 &