Linux shell脚本基础

文件形式

第一行:#!/bin/bash

数组

除了中间用空格隔开,其他差不多,例如:arr=(1 2 3 4 5)

while语句
while [ 条件 ] #注意两边都要有空格
do
  语句
done
for语句
for ((i=0; i<100; i++))
do
  语句
done
if语句
if [ 条件 ]
then
  语句
else
  语句
fi
逻辑语句条件
-eq:测试两个整数是否相等(equal)
-ne:测试两个整数是否不等(not equal)
-gt:测试一个数是否大于另一个数(grater than)
-lt:测试一个数是否小于另一个数(less than)
-ge:大于或等于(great than & equal)
-le:小于或等于(less than & equal)
-d:当pathname存在并且是一个目录时返回真(directory)
-f:当file存在并且是正规文件时返回真(file)

示例

1.输出1+2+3+到100
sum=0
j=1
for((j;j<=100;j++))
do
 let "sum=sum+j"
done
echo $sum
2.复制文件到某目录下之类
#!/bin/bash
file=$1
index=$2
if [ -d $index ] && [ -f $file ]  #-d判断目录存在,-f判断文件存在
then
 cp $file $index/$file
fi
3.将参数倒序输出
#!/bin/bash
count=$# #这里得到参数数量n
cmd=echo
echo $cmd
while [ $count -gt 0 ]
do
 cmd="$cmd \$$count" #相当于$n $n-1…$1
 count=`expr $count - 1` #注意-两边有空格
done
eval $cmd
4.输出某个目录下一堆文件(不确定几个)的内容
#!/bin/bash
dir=$1
shift #第二个参数开始全是文件名
if [ -d $dir ]
then
cd $dir
for name in $* #传入所有文件名
do
if [ -f $name ]
then cat $name
echo "the end of : ${dir}/$name"
else
echo "Invaild file name : ${dir}/$name"
fi
done
else echo "Wrong directory name : $dir"
fi
5.数组实现斐波那契数列输出
#!/bin/bash
a=(1 1)
sum=0
n=$1
if [ $n -gt 0 ]
then
 for ((i=2;i<n+2;i++))
 do
 echo ${a[i-2]}
 let "a[i]=a[i-1]+a[i-2]"
 done
fi

几种运行方式

(1)bash 脚本名
(2)source 脚本名
(3). 脚本名
(4)./脚本名,但是这种需要通过命令:chmod +x 脚本名,来增加执行权限后才可使用

参考

简单教程:https://blog.csdn.net/qq_22075977/article/details/75209149

    原文作者:dawsonenjoy
    原文地址: https://www.jianshu.com/p/e5285a289c1a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞