
截图上也说了
要写成一行 要用分号来分隔的


写if 结束必须有fi反制
写if 必须跟着then
单一的一个if then else
else后面不能有then
要是多个条件
if then
elif
then
else
fi
没有else if 只有 elif 后面必须跟then
else 后面不能跟then


循环
while for util

for例子

seq 1 20 虚拟化增长 1到20



然后再写个这个

运行 哦 前边的也运行了 所以打印了东西
第二个函数没打印出东西

但是
我们查看当前目录
即 /home/shell
第二个函数创建了好多东西

然后我们看while
while后面的括号要写两组括号
然后 while(())
do
…
done
然后shell里面没有i++
要实现i增加
使用expr
i=反引号expr $i + 1w反引号
或者
使用工具
比如 let “i++”
这样就可以使用i++了


别忘了赋予权限

然后case



例子 case


shell中的方法

例子:
单纯的定义方法和调用方法 只打印一句话


带返回值的例子


这是视频写的 好像前面不加function也行…

3.带参数的例子
dollar符后面跟1表示取第一个参数
取第几个参数 dollar符后面就跟几
还有$ * 也是代表取所有参数 (两个之间没空格)
$0 就取到文件的名字了
注意取字符串长度和数组长度都和井号#有关.



注意这个 第一个结果是10 不正确
第二个结果是900 正确
为什么这样
当参数的个数大于等于两位数时 取第几个参数值时需要加上花括号 才能取到 不然就会打印出来它本身
还有一个例子


所以注意这几个符号

@和*是一个效果

九 文件引入
跟java中的import差不多


例子
先写个1.sh

1.sh只是引用 所以不用给它可执行权限
然后再写个2.sh
第一种引入方式 使用source加文件绝对路径


第二种方式 点加文件路径

结果是一样的

十 shell的调试



例子·1.使用sh -n
写个for循环 没有写do

检测 报错


修改后再执行 可以了.

我们进行普通的调试 使用sh -x

显示的是所有步骤
这样一步就全显示了 不能交互式调试
所以我们使用第三种 中断调试
加一句 sleep 2 睡眠2秒

这样在睡眠的时候 停在某一步 我们可以ctrl z 停止 想要继续 输入fg 回车继续

使用工具bashdb
我们写个例子

先打印下看看

然后我们因为没有配置环境变量
所以需要到bashdb工具目录下进行调试
就是不能直接使用该命令
所以
我们先进入该目录cd /usr/local/bashdb-4.4-1.0.1/ 使用tab进行补全
使用该命令 对bs shell文件进行调试
./bashdb --debugger /home/shell/bs.sh

这样就进来了
然后我们看下常用命令

我们打个l 表示列出上下5行 共10行

注意此截图 那个箭头 表示执行到了第三行
n 执行下一条语句

我们再第7行设置断点 b 7告诉我们成功设置

我们按c继续运行 没有告诉它运行到第几行 所以它直接运行到了断点的第7行

我们想知道此时i的值 使用print打印
print $i

我们打印下断点的变量
没打印出来
因为此时还在断点那一句 没执行完
n执行下一句
所以再打印一次 出来了

然后再去n n c …执行看看

有断点的时候finish会先执行到断点
结束退出按q

练习


本文围绕Shell脚本展开,介绍了if-else语句的正确写法,如if后需跟then,结束用fi,多条件用elif;还阐述了while、for等循环的使用,以及方法的定义、调用、带返回值和参数的情况。此外,讲解了文件引入方式,类似Java的import,最后介绍了多种调试方法,如sh -n、sh -x等。
33万+

被折叠的 条评论
为什么被折叠?



