shell文件需要以.sh为后缀名。
以#!/bin/bash开头,代表$BASH地址。
#!/bin/bash
echo "hujun"
A=10
#打印变量值
echo $A
#打印当前文件地址
echo $PWD
#打印当前程序名称
echo $0
#打印输入的第一个参数
echo $1
#打印输入的第二个参数
echo $2
#打印输出的所有参数
echo $*
#打印输入参数个数
echo $#
#命令执行的状态,一般返回0,代表成功。代表上一个命令是否执行成功
echo $?
注意:变量名定义时=前后不能有空格。
循环语句for
#!/bin/bash
#seq 是系统自带命令,生成数组
#用反引号括起来的是一个语句,生成的结果作为参数
for i in `seq 1 15`; do
echo $I
done
for (( i = 0; i < 10; i++ )); do
echo $I
done
j=0
for i in `seq 1 10`; do
#expr是运算命令,做加法和减法
# + 号前后必须有空格,否则就是字符串相加了
j=`expr $i + $j`
done
echo $j
打包命令
#把当前文件夹里所有文件打包为all.tgz
tar czf all.tgz *
循环用例
#!/bin/bash
#find寻找
for i in `find . -name "*.sh"`; do
#
echo $I
#tar -czf压缩
tar -czf all/all.tgz $I
done
while循环
#!/bin/bash
I=0
#算术判断
while ((i<10)); do
echo $I
i=`expr $i + 1`
done
echo $I
I=0
#命令判断
while [[ $i -lt 10 ]]; do
echo $I
i=`expr $i + 1`
done
注意:命令判断语句[[后面必须有空格,否则会报错。
读取文件
#!/bin/bash
#read为读取
while read line
do
echo $line
done<tar.sh
判断语句if
#!/bin/bash
num1=10
num2=20
#判断后的语句必须有tab键输入,不能是空格,也不能定格写,否则会报错
if((num2>num1));then
echo "num2>num1"
fi
if(($1>$2));then
echo "first > second"
else
echo "first < second"
fi
逻辑运算符
-f 判断文件是否存在
-d 判断目录是否存在
-eg 等于 整形比较
-ne 不等于
-le 小于
-ge 大于或等于
-a 双方都成立
-o 单方成立
-z 是否是空字符串
#!/bin/bash
#通过-d 判断是否存在目录,!为取反
if [[ ! -d hujun1 ]]; then
# mkdir 为创建目录,-p为依次创建
echo "mkdir hujun"
mkdir -p hujun1 hujun2
else
echo "存在该目录"
fi
#-f判断文件是否存在
if [[ -f $1 ]]; then
echo "该文件存在"
#cat 为打印整个文件
cat $1
else
echo "该文件不存在"
fi
Shell算术运算类别:
算数运算符、关系运算符、布尔运算符、字符串运算符、文件测试运算符。
算术运算符

关系运算符

布尔运算符

逻辑运算符

字符串运算符

文件测试运算符

算术运算

#!/bin/bash
#四种算术运算方式
r=$(( 4 + 5 ))
echo $r
r=$[ 4 + 5 ]
echo $r
let r=r+1
echo $r
r=`expr $r + 1`
echo $r
字符串运算符
#if后面的[ 需要有空格,否则会报错
if [ -z $1 ];then
echo "输入为空"
fi
文件描述符

重定向

#0是文件描述符里的屏幕,< 为重定向符
#这句话意思就是,将 if.sh文件输出到屏幕上显示
cat 0< if.sh
#将字符串输入到文件test里
echo hello > test
网友评论