shell 程序设计(小白版本)

这篇博客介绍了Shell编程的基础知识,包括使用for循环复制文件、注意点、bash语法、打印星号的递增行、mv命令的特殊用法以及while循环的应用。同时,文章提到了数值测试运算符的使用,是初学者学习Shell编程的良好参考资料。
摘要由CSDN通过智能技术生成

最近我们在学shell编程,就写几个自己慢慢学习shell编程的博客以作记录,先定个小目标,先写100个

1. 使用for循环,dir1文件夹中文件复制到dir2文件夹中
for i in dir1/*
do
cp $i dir2
done

其中dir/*表示dir文件下所有文件

2. 使用for循环的两个注意点
for i in $*
do
echo $i
done
for i     //没有  in  和 文件正则表达式
do
echo i
done

$*表示传入的所有位置参数

比如 ,我是用这个程序时传入参数是 斜杠 星号 斜杠 星号 斜杠 星号 则显示根目录下所有的三级目录

第二个脚本和第一个等价

3.这里插入一下bash的语法形式

bash shell脚本 参数1 参数2

bash >shell脚本

4.使用for循环打印*,第一行一个,第二行两个,递增,输出行数由外部输入决定
for((i=1;i<=$1;i++))
 do
     for((j=1;j<=i;j++))
     do
        echo -n  "*"
    done
  echo
 done

你会发现

  1. 这个shell脚本和C语言编程的不同点 for循环很相似,但是是两个括号
  2. echo函数后面跟了一个-n
  3. 第一个函数done后 ,后面还跟了一个echo
  4. *号我特意加了""

注释:(我自己实验之后给自己看的,最好自己试验一下)
5. -n表示和后行连接
6. echo函数自动默认换行,即每次都是另起一行开始输出
7. -n后跟一个echo表示后面连接一个空白行,即换行

5. mv命令 ,我们一般都知道mv命令是用来移动文件的,但是,如果,移动的目标位置不存在,那么意味着什么呢? 意味着创建了一个新文件,把原文件中的所有东西移动到了新文件中,相当于改变了文件名

【格式】mv 原文件名 新文件名

6. while循环
  while [ -f $1 ]
  do
     echo $1 is a file
  shift
done

本来觉得这是一个对的程序,首先while循环$1是否为文本文件,如果是,执行输出

$1 is a fiel

但是这是一个错误的程序

while [ $1 ]
do
 if [ -f $1 ]
 then 
   echo $1 is a file
 else
   echo $1 isnt a file
 fi
 shift
 done

这才是正确的代码,具体什么情况,我也不太清楚,上面错误代码,最后会无限输出,is a fiel

(补充:今天我又试了一下,我发现只要最后输入的参数值时不符合条件的,就不会有无限输出的情况,可能是while循环没有办法shift出来,等同于while(ture)无限循环,先注意一下吧;)

不过要注意的是,正确代码段,与两个中括号,其中都要注意两边要带空格,否则会给出错误提示

7.这里补充一下数值测试运算符(-eq,-ne, -lt, -le, -gt, -ge)
     shell 中不存在  >=, <=, = 等运算符,所有的运算符都被上面的字符组合替代
     其中    -eq  是 equal     也就是等于
             -ne  是 no equal  就是不等于
             -lt  是 less than   就是小于
             -le  是less equal 就是小于等于
             剩下的类推
8
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值