linux shell 编程

简介: shell 编程 1.简述 利用vi等文本编辑器编写Shell脚本的格式是固定的,如下: #!/bin/bash#commentsYour commands go here 首行中的符号#!告诉系统其后路径所指定的程序bash即是解释此脚本文件的Shell程序。 除第一行外,以#开头的行就是注释行,直到此行的结束。如果一行未完成,可以在行尾加上",这个符号表明下一行与此

shell 编程

1.简述

利用vi等文本编辑器编写Shell脚本的格式是固定的,如下:

#!/bin/bash
#comments
Your commands go here 

首行中的符号#!告诉系统其后路径所指定的程序bash即是解释此脚本文件的Shell程序。

除第一行外,以#开头的行就是注释行,直到此行的结束。如果一行未完成,可以在行尾加上",这个符号表明下一行与此行会合并为同一行。

2.变量

有环境变量、内部变量、用户变量。

Shell Script是一种弱类型语言,使用变量的时候无需首先声明其类型。

variable_name = variable_value

取值的时候要在变量名前加$,$variable_name可以在引号中使用,这一点和其他高级语言是明显不同的。

特殊变量

$$
Shell本身的PID(ProcessID)
$!
Shell最后运行的后台Process的PID
$?
最后运行的命令的结束代码(返回值)
$#
添加到Shell的参数个数
$0
Shell本身的文件名
$1~$n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。

demo:

3.数字比较

-eq  equal

-ge greater or equal

-le less or equal

-ne not equal

-gt greater than

-lt less than

4.字符串比较

== 是否相等

 !=  是否不等
-n 长度是否大于0
-z 长度是否等于0

5.文件操作符

-d 是否为目录

-f 是否为文件

-r 是否可读

-w 是否可写

-x 是否可执行

6.逻辑运算符

! 等价c语言 !

-a 等价c语言 &&

-o 等价c语言 ||

7.for语句

for current_variable

do

  statements

done

8.if语句

if [ expression ] ; then
statements
elif [ expression ] ; then
statements
else
statements
fi
说明:elif或else语句不是必需的。

9.case语句

 case str in
str1 | str2)
statements;;
str3|str4)
statements;;
*)
statements;;
esac

说明:*对应C语言的 default; ";;"对应C语言的break。

10. exit语句

 退出shell程序并返回一个值,方便被另一个shell调用并给出反馈。

11.函数

 func(){
statements
}


12. shell脚本中执行其他shell脚本

12.1 直接调用

如  /root/soft/apache-tomcat-8.0.21/bin/shutdown.sh
运行的时候开一个sub-shell执行调用的脚本,sub-shell执行完毕后返回parent-shell。 sub-shell从parent-shell继承环境变量,但是sub-shell中的环境变量不会带回parent-shell。

12.2 exec

exec /root/soft/apache-tomcat-8.0.21/bin/shutdown.sh
在当前shell下执行目标脚本,执行结束后,当前脚本中exec行之后的内容就不会再执行了。

12.3 source

source  /root/soft/apache-tomcat-8.0.21/bin/shutdown.sh  或   .   /root/soft/apache-tomcat-8.0.21/bin/shutdown.sh

source命令也称为“点命令”,也就是一个点符号(.),是bash的内部命令。

读取目标脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。

目录
相关文章
|
6天前
|
Linux Shell
Linux系统编程:掌握popen函数的使用
记得在使用完 `popen`打开的流后,总是使用 `pclose`来正确关闭它,并回收资源。这种做法符合良好的编程习惯,有助于保持程序的健壮性和稳定性。
17 6
|
7天前
|
Linux Shell
Linux系统编程:掌握popen函数的使用
记得在使用完 `popen`打开的流后,总是使用 `pclose`来正确关闭它,并回收资源。这种做法符合良好的编程习惯,有助于保持程序的健壮性和稳定性。
29 3
|
16天前
|
存储 Unix Shell
shell脚本编程基础
【9月更文挑战第4天】
32 12
|
16天前
|
Shell Linux
Shell 编程 编写hello word
Shell 编写hello word
38 5
|
16天前
|
Shell Linux 开发工具
linux shell 脚本调试技巧
【9月更文挑战第3天】在Linux中调试shell脚本可采用多种技巧:使用`-x`选项显示每行命令及变量扩展情况;通过`read`或`trap`设置断点;利用`echo`检查变量值,`set`显示所有变量;检查退出状态码 `$?` 进行错误处理;使用`bashdb`等调试工具实现更复杂调试功能。
|
20天前
|
项目管理 敏捷开发 开发框架
敏捷与瀑布的对决:解析Xamarin项目管理中如何运用敏捷方法提升开发效率并应对市场变化
【8月更文挑战第31天】在数字化时代,项目管理对软件开发至关重要,尤其是在跨平台框架 Xamarin 中。本文《Xamarin 项目管理:敏捷方法的应用》通过对比传统瀑布方法与敏捷方法,揭示敏捷在 Xamarin 项目中的优势。瀑布方法按线性顺序推进,适用于需求固定的小型项目;而敏捷方法如 Scrum 则强调迭代和增量开发,更适合需求多变、竞争激烈的环境。通过详细分析两种方法在 Xamarin 项目中的实际应用,本文展示了敏捷方法如何提高灵活性、适应性和开发效率,使其成为 Xamarin 项目成功的利器。
34 1
|
21天前
|
安全 Linux 开发工具
探索Linux操作系统:从命令行到脚本编程
【8月更文挑战第31天】在这篇文章中,我们将一起潜入Linux操作系统的海洋,从最基础的命令行操作开始,逐步深入到编写实用的脚本。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和实用技能。我们将通过实际代码示例,展示如何在日常工作中利用Linux的强大功能来简化任务和提高效率。准备好了吗?让我们一起开启这段旅程,探索Linux的奥秘吧!
|
21天前
|
Linux
揭秘Linux心脏:那些让你的编程事半功倍的主要系统调用
【8月更文挑战第31天】Linux中的系统调用是操作系统提供给应用程序的接口,用于请求内核服务,如文件操作、进程控制等。本文列举了22种主要系统调用,包括fork()、exec()、exit()、wait()、open()、close()、read()、write()等,并通过示例代码展示了如何使用fork()创建新进程及使用open()、write()、close()操作文件。这些系统调用是Linux中最基本的接口,帮助应用程序与内核交互。
28 1
|
30天前
|
Shell KVM 虚拟化
Shell 数组编程
【8月更文挑战第22天】 Shell 数组编程
39 10
|
30天前
|
JavaScript 关系型数据库 Shell
Linux shell编写技巧之随机取字符串(一)
本文介绍了Linux Shell脚本的编写技巧,包括环境配置、变量命名规则和缩进语法,并提供了一个实例练习,展示如何使用`$RANDOM`变量和`md5sum`命令来生成随机的8位字符串。
33 4