shell未预期的文件结尾_自整理Shell脚本基础

82520082443db45a4c621bf33a8d756b.png

Shell编程理论和运用

程序的编程风格和执行模式

过程式:以指令为中心,来进行写程序,数据服务于指令。(bash shell) C

对象式:以数据为中心,考虑先如何组织数据,指令服务于数据。 C# C++ JAVA PYTHON ……

shell程序 (调用二进制程序 解释执行)

程序的执行方式

计算机:二进制指令

编程语言:

低级:汇编语言

高级:

编译:高级语言–>编译器–>目标代码

解释:高级语言–>解释器–>机器代码 shell php ruby python

shell编程的执行模式

顺序执行

循环执行

选择执行

shell编程的结构 bash shell 核心中心就是调用指令(堆命令,严重依赖当前环境)

变量、数组

表达式

语句

shell脚本:文本文件 约定俗成要以.sh为结尾

结构和格式 shebang #!/bin/bash 脚本声明

脚本的概念

将要执行的命令按照顺序保存到一个文本中

给文件相应的权限即可执行

结合控制语句可以完成复杂操作

脚本的应用场景

重复 批量事务处理 自动化运维 定期任务执行 服务器运行监控

脚本结构:脚本声明+注释(解释信息)+可执行语句

结构和格式 shebang #!/bin/bash

de288f989a85dcac4a6b53f3c0ba35a0.png

Shell程序的执行和Python程序的执行

b75ddc164e773f9f8a0b4d12d7d08a60.png

f7cd3bcc81a61ffa031ed8589865d3e9.png

3b245703a3459ac4584361facccac52c.png

bash -n /path/to/script 检查语法是否错误

2fec78a7a3ff74810c623fd305e57b18.png

变量、数字赋值规则

变量赋值:=号

变量等于字符串:==

数字的大于小于等于:-eq 等于

-gt 大于

-ge 大于等于

-lt 小于

-le 小于等于

脚本循环控制语句

for while until

1:for循环

for var_Name in 列表; do

循环体(正常执行的执行命令)

语句1

语句2

语句3

done

bash -n 脚本文件 检查脚本文件语法是否错误

seq:遍历元素

23ebbc66d200119f3a55f19f2907ec6e.png

创建10个用户,用户名为user1-user10,并打印出它们的UID

8f252e9b647c9645d154504c4fde705c.png

1加到100的和数

abcaa78a17e3aede7532035640b587dd.png

2:交互式脚本(变量的赋值以交互式来进行)

read -p 交互

d647331bf43e3dd1611d1b55f9a71a2c.png

3:条件判断

测试方法:

①:test 条件表达式

②:[ 条件表达式 ] 或者 [[ 条件表达式 ]](注意两边至少有一个空格)

文件或目录测试 格式 [ 操作符 文件或目录 ]

-d:测试是否为目录

-f:测试是否为文件

-e:测试文件是否存在

-r:测试文件是否有读权

059d9520713c311f2b4bdabe30726f76.png

逻辑测试

布尔值 (真 假)

与运算:

真 && 真 = 真(0)

真 && 假 = 假

假 && 真 = 假

假 && 假 = 假

或运算:

真 || 真 = 真(0)

真 || 假 = 真

假 || 真 = 真

假 || 假 = 假

非运算:

!真 = 假

!假 = 真

23db8804e0623c765cbed08351ace0b1.png

4:if语句判断(单分支 双分支 多分支)

if语句

格式

if condition;then

statement1

fi

bafcf3ddc691363638509f4a5516548e.png

if condition;then

分支1;

else

分支2;

fi

9b46b1a359cb561beb4bfdc6b8419d1f.png

if condition;then

分支1;

elif condition;then

分支2;

else

分支n;

fi

输入成绩,得出100以内各分段的评语

205d8eac6339890567d0d3c6e3136844.png

4ed0411d02fd6b608b1ad92bb4b51311.png

ac9490f7ecc5d9480f45b599a730af71.png

5:程序执行状态返回值

bash :每个命令,执行状态都有返回值

成功:0

失败:非0

$?

脚本的状态返回值:脚本执行的最后一条命令:

自定义脚本状态返回值:exit[n]

bc1b17bfe7ef26e2dbb9cfb64cee2abf.png

6:case语句

格式

case 变量引用 in

条件1)

分支1

;;

条件2)

分支2

;;

*)

默认分支

;;

esac

e7a5ed4b350bfc36a4dd7f173dfede1d.png

[0-5][0-9] 0-59 [6-7][0-9] 60-79

7:Wille循环
格式

while 条件测试;do
循环体
done
while循环:条件测试成功,则循环;失败,则退出
如何退出?
必须有时刻,条件测试不成功
? :条件控制变量

如何让循环退出:在循环体中改变测试条件中用于控制循环次数的变量的值

b072043473f2aa9067140e2ad0a9809b.png

用while循环写一个脚本

Ping 10.10.16这个网段的主机,打印出可以ping通的和不能ping通主机的数量,要求10.10.16.50-10.10.16.100这个区间

结果为ping通主机的数量

不能ping通主机的数量

fbb2470da93ec159b8dedf49188080a2.png

求100以内的素数/质数

7098231d7528d0ffb4995d5c34a6198d.png

斐波那契数列

77387f83ebfce8c3d42bfb08b7677bdc.png

函数

函数基本讲解

过程式编程:代码重用

模块化编程

结构化编程

934c54b560ac30bbdd052860ff1f7609.png

db2a7bf9122280c9045824332443b736.png
### 回答1: 这个错误通常在使用Shell脚本时出现,表示在脚本中存在一个或多个命令不完整或存在语法错误,导致Shell无法正确解析脚本。可能的原因包括代码拼写错误、缺失括号、引号、分号等标点符号等。解决此问题的方法是检查脚本并修复语法错误,确保所有命令都得到正确的结束,以使脚本能够成功执行。 ### 回答2: Shell预期文件结尾是指在执行Shell脚本时,遇到了文件结尾,但脚本并没有结束,而是出现了预期的错误提示。这种错误可能是由于脚本中存在语法错误或逻辑错误导致的。 造成Shell脚本出现预期文件结尾错误的原因有很多,其中常见的原因包括: 1. 脚本中存在语法错误,例如拼写错误、缺少括号或引号等 2. 脚本中存在逻辑错误,例如变量定义、文件不存在或权限不足等 3. 脚本中出现了shell特殊字符或关键字,例如&&、||、()等,这些字符可能被解释为其他命令,导致脚本出现错误提示。 针对上述问题,可以采取以下措施进行排查和解决: 1. 仔细检查脚本代码,查找语法错误和逻辑错误,如有必要可借助Shell调试工具进行定位和调试。 2. 确保所需的文件和目录存在,并具有执行权限,可以使用ls、cd等命令进行查找和验证。 3. 避免在脚本中使用shell特殊字符和关键字,或使用转义字符进行转义,以保证脚本正常执行。 总体来说,对于Shell预期文件结尾错误,需要细心的排查和调试,找出原因并加以解决,才能确保脚本的正常执行。同时,也需要加强对Shell语法和特殊字符的理解,避免由于可读性差或使用不当导致的错误。 ### 回答3: Shell编程是一种程序设计语言,可以编写脚本来自动执行某些特定任务。在使用Shell编程时,有时会出现“预期文件结尾”的错误提示。这种情况通常是由于脚本的语法错误造成的。 出现“预期文件结尾”错误提示的常见原因是在脚本中存在语法错误,比如缺少结束标志符或者拼写错误等。当Shell尝试执行这些脚本时,会发现它们没有正确结束,因此就会出现“预期文件结尾”的错误。 解决这种错误的方法有多种。首先,可以检查脚本的语法是否符合规范,确保所有的语句都有正确的结束标志符。其次,如果出现了拼写错误等问题,也需要及时修改。 除了以上方法,还可以尝试使用调试工具来帮助定位问题。例如,可以使用Shell的调试模式查看脚本的执行过程,检查每个语句是否能够正常执行。另外,还可以使用Shell的错误追踪功能来跟踪出现错误的位置,并尝试修复问题所在。 总之,出现“预期文件结尾”错误提示时,需要仔细检查脚本的语法,尽可能排除所有可能的错误因素,并使用调试工具来帮助定位和解决问题。只有这样,才能够顺利地编写并执行Shell脚本,达到预期的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值