1.shell脚本
${n}为变量引用
en=112 33 X 单独赋值不能有空格
en="123" 等号两边不能有空格
en='123 456' # " 和 ' 区别“可以通过${en}应用,' 不能引用值
en=`ls`/en=$(ls) 命令赋值 注意:` 为反引号tab键上方
unset 删除变量
2.特殊变量
$0 表示当前脚本文件名
$n(n>=1) 传递给脚本或函数的参数 n表示第几个参数 $1 表示第一个
$# 传递给脚本或函数的参数个数
$* 传递给脚本或函数的所有参数
$@ 与$*相似但略有不同
$? 上个命令的退出状态或者获取函数返回值
$$ 当前shell进程ID
read 读取键盘输入数据 read a/read -p "input a=" a
(( )) 逻辑运算符 $(( a+b )) a和b为变量
逻辑运算符 || 和 && 同c语言
test 检测条件是否成立 test $a -eq $b && echo " a = b" / [ ]
-eq 判断数值是否相等
-ne 是否不相等
-gt 是否大于
-lt 是否小于
-ge是否大于等于
-le 是否小于等于
-z str 判断字符串是否为空
-n str 判断字符串是否非空
=和== 判断字符串是否相等
-d 判断目录是否存在
-f 判断文件是否存在
3.管道
command1 | command2
#command1 是第一个命令
command2 是第一个命令传出值赋值给第二个命令
4,if语句
if [ $a -ge $b ]
then
echo "a >= b"
else
echo "a < b"
fi
(2) if elif else
if [ $a -gt $b ]
then
echo "a > b"
elif [ $a -lt $b ]
then
echo "a < b"
else
echo "a = b"
fi
(5) case in 相当于 switch
case $a in
1)
echo "a=1"
;;
2) echo "a=2"
;;
*) echo "a!=1 && a!=2"
;;
esac
*号表示任何数 ;; 相当于break 效果
(6)for in
for n in 1 2 3 4 5 6 7 8 9 10
do
echo "$n"
done
取值范围
for n in {1..10}
do
echo "$n"
done
命令
for n in $(ls /bin/*sh)
do
echo "$n"
done
特殊变量
for n in "$*"
do
echo "$n"
done
参数传入
./hello.sh 1 2 3
结果 :1 2 3
for n in "$@"
do
echo "$n"
done
参数传入
./hello.sh 1 2 3
结果 : 1
2
3
“$*”表示整体 “$@”表示单个
(6) while 循环
n=0
while(( n<10))
do
echo "${n}"
n=$((n+1))
done
(7)函数
function my_name(){
echo "lizhaoyang"
}
my_name