编辑代码

#echo 输出

#变量使用
a="hello world"
b='hello world'
echo $a
echo "aaa $a", "bbb $b"
echo ${a}_1111  #输出hello world_1111

#预定义变量
pwd
echo $PWD   #输出/home/code
echo $PATH
echo $USER
echo $HOME

# 数组变量,()
c=(1 2 3 4 5)
echo $c    #输出数组中第一个值 1
echo ${c[*]}    #输出数组中所有内容
echo ${c[@]}
echo ${#c[*]}   #输出数组长度5
d=`pwd`
echo $d
# array=(`home`)
# echo $array

# 特殊符号的使用
#$(()),对变量进行操作
e=2;f=4
echo $((e+f))   #输出6
echo $((1+2*e)) #输出5

#变量类型
#字符串
s="string type"
#数字
i=9
#布尔
bb=true
echo $s,$i,$bb  #输出string,9,true

#数字型变量
echo $((i=i+1)) #输出10,  i=9+1=10
echo $((i++))   #输出10
echo $((e<f))   #输出1,正确
((e>20))
echo $? #判断上个语句是否正确,1错误,0正确
echo $((2/3))   #输出0,不支持浮点数计算

#字符串操作
echo ${s:4}     #输出ng type,从第4位后开始切片
echo ${s:4:5}   #输出ng ty,从第4位后开始切片,切5个,空格也算1个
echo ${#s}  #输出字符串长度11
echo ${s#str}   #输出ing type,“#”匹配str后的内容
echo "${s#str}"
echo "${s#*g}"  #输出 type,匹配g后的内容
#echo "${s&&g*}"
echo ${s/type/qqq}  #输出string qqq,将type替换成qqq,/替换前内容/替换后内容

#布尔变量
t=true
echo $? #输出0,0表示正确,非0表示错误
f=false
echo $f
echo $?

#判断的类型
# 算术判断,放在[]中运行,注意格式
[ 2 -eq 2 ];echo $? #eq等于,输出0,正确
[ 3 -ne 2 ];echo $? #ne不等于
[ 3 -gt 1 ];echo $? #gt大于
[ 3 -ge 3 ];echo $? #ge大于等于
[ 3 -lt 4 ];echo $? #lt小于
[ 3 -le 3 ];echo $? #le小于等于

#逻辑判断
[ 2 -eq 2 -a 2 -eq 3 ];echo $?  逻辑判断    #-a表示逻辑与&&,第二个判断错误,所以输出1
[ 2 -eq 2 -o 2 -eq 3 ];echo $?  #-a表示逻辑或||,成立1个即可,所以输出0
[ ! 2 -eq 2 ];echo $?  #!表示逻辑非,2=2 正确,非=不正确,所以输出1


#内置判断
touch test.sh   #创建文件test.sh
touch test_file #创建文件夹test_file
ls -l test_file
ls
[ -e test.sh ];echo $?  #判断文件test.sh是否存在,返回0

#逻辑控制
#条件if
if [ -f test.sh ]
then echo yes
fi              #判断test.sh是否是一个文件,输出yes

if [ -f test_file ]; then echo is file;fi 
if [ -f aaa.sh ]; then echo yes;else echo no file;fi    #输出no file


#for循环
for((i=0;i<10;i++))
do echo $i
done        #输出0-9

#for遍历循环
for j in ${c[*]}
do echo $j
done        #输出数组c的值1,2,3,4,5

# while循环
x=2
while [ $x -lt 5 ]
do echo $x
((x=x+1))   #不做该步骤,会陷入死循环
done        

#输入输出
echo 输入输出
ls
read line < /home/code/test

#通配
echo *  #当前目录下所有文件