#!/bin/bash
#1.基本指令
# clear #清屏
# touch file #创建文件
# mkdir mk #创建文件夹
# ls -al #查看当前目录详细信息
# echo "打印信息"
# name="hhddyy"
# echo name #打印字符name
# echo "name" #打印字符name
# echo "$name" #打印name内容
# echo $name #打印name内容
# echo '$name' #打印$name字符
# read str #从终端读一个值到str中
# echo $str
# read str num #从终端中分别读二个值到str、num中
# echo $str $num
# echo "$0" #进程名字
# echo "$$" #进程ID号
# echo "=$*" #代表执行脚本传递进来的全部参数
# echo "$1" #代表执行脚本传递进来的第一个参数
# echo "$3" #代表执行脚本传递进来的第三个参数
# echo "$#" #代表执行脚本传递进来的参数个数
# str="hahaha"
# [ $str = "str" ] # 该式子是否成立 成立 “$?”输出结果为0 ,不成立为1
# echo "$?"
# echo "str1=$str" #" "将str的值填入str1
# echo "this is `date`" # ` `内部当作一条命令执行`` 不是单引号,而是 键盘中 ~ 键英文状态下的输入
# echo "this is `ls`"
#2.() 和{}的使用
# num=30
# (
# num=20
# echo "$num" #在()里面num的值会改变
# )
# echo "$num" #在()里面num的值不会改变
# {
# num=20
# echo "$num" #在{}里面num的值会改变
# }
# echo "$num" #出了{}num的值也会改变
# 3.#输入和输入提示不在同一行
# echo "输入一个值num:"
# read num
# echo $num
# #输入和输入提示在同一行
# read -p "输入一个值num:" num
# echo $num
#4.空间分配问题
# echo ${num1:-101}
# num2=106
# echo ${num2:-102}
# echo "$num1,$num2" #只能输出num2的值106 num1没有分配空间
# echo ${num3:=103}
# num4=108
# echo ${num4:=104}
# echo "$num3,$num4" #都能输出num2的值103 num1108
# 5.#字符串替换
# str="studentstudent"
# #一个/
# echo ${str/"tu"/"TU"} #替换第一个
# #两个//
# echo ${str//"tu"/"TU"} #替换所有
# echo str #字符本身不会改变,替换只在表达式发生改变
#6.文件测试
# -r 读 、-w 写、x执行 、-e是否存在、-s文件里面是否有内容、-f是否是文件、-d是否是目录
#
# test -e ./file #判断文件是否存在 存在输出0 否 1
# echo $?
# test -w ./file
# echo $?
# #另一种写法
# [ -s ./file ]
# echo $?
# 7.#字符串测试
# str="hell"
# [ $str = "hell" ] #判断字符串是否相等
# echo "$?" #输出0
# [ $str = "hell1" ] #判断字符串是否相等
# echo "$?" #输出1
# [ -z $str ] #判断是否为空,为空输出0
# echo "$?" #不为空输出1
#8.数字大小判断
# -eq 是否相等
# -gt 是否大于
# -ge 是否大于等于
# -lt 是否小于
# -le 是否小于等于
# -ne 不等于
# num=10
# test $num -eq 10 #真输出0
# echo "$?"
# [ $num -eq 11 ] #真假输出1
# echo "$?"
#if控制语句
#判断num与10的关系
num=11
if test $num -eq 10 ;then
echo "$num等于10"
#else if
elif [ $num -gt 11 ] ;then
echo "$num大于10"
else
echo "$num小于10"
fi
#case语句
read str
echo $str
case $str in
No)
echo "匹配上No"
;;
Yes)
echo "匹配上Yes"
;;
Y*|y*|O*) #匹配Y、y、O开头的字符串
echo "匹配Y*|y*|O*"
;;
*) #所有都可匹配上
echo "匹配到*"
;;#相等于c中的break
esac #尾
#for 循环的使用
# declare -i sum #将i指定成int型
# for((i=0;$i<5;i=$i+1)) #将i从0加到4
# do
# sum=$sum+$i;
# done
# echo "sum=$sum"
# sum=0
# for i in 1 2 3 4 5 #将这些数相加
# do
# sum=$sum+$i
# echo "sum=$sum"
# done
#遍历目录
# mkdir stu
# for i in `ls` #判断当前目录下哪个是文件哪个是目录
# do
# if test -d $i ;then
# echo "$i是目录"
# elif [ -f $i ] ;then
# echo "$i是文件"
# else
# echo "$i不是文件也不是目录"
# fi
# done
# rm -rf stu
#while是使用
# declare -i num
# declare -i sum
# num=0
# sum=0
# while test $num -ne 10 #当num小于10 进入循环
# do
# num=$num+1
# if [ $num -eq 6 ];then #当等于6时,本次循环结束,开始下一轮循环
# continue
# elif test $num -gt 8 ;then #当等于8时跳出循环
# break
# fi
# echo "$num"
# done
#until 就是不满足条件时进入循环 与while相反,
# until test $num -eq 10 #当num不等于10 进入循环
# do
# num=$num+1
# if [ $num -eq 6 ];then #当等于6时,本次循环结束,开始下一轮循环
# continue
# elif test $num -gt 8 ;then #当等于8时跳出循环
# break
# fi
# echo "$num"
# done
#分文件操作
# source 03myadd.sh #包含有myadd函数函数的文件
# read num1 num2 #键盘输入两个数
# myadd num1 num2 #调用myadd进项相加
# echo "$?" #输出结果
03myadd.sh 文件代码