我在工作中如何使用shell摸鱼的

简介: 摸鱼小能手

shell 函数

函数先定义后使用

shell中函数的定义格式如下:[function] funname [()]

{

 action;

[return int;]

}

说明:

  • 1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
  • 2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255

下面的例子定义了一个函数并进行调用:

demoFun(){

   echo"这是我的第一个 shell 函数!"

}

echo"-----函数开始执行-----"

demoFun

echo"-----函数执行完毕-----"

输出结果:

-----函数开始执行-----

这是我的第一个 shell 函数!

-----函数执行完毕-----

funWithReturn(){

   echo"这个函数会对输入的两个数字进行相加运算..."

   echo"输入第一个数字: "

   read aNum

   echo"输入第二个数字: "

   read anotherNum

   echo"两个数字分别为 $aNum$anotherNum !"

   return $(($aNum+$anotherNum))

}

funWithReturn

echo"输入的两个数字之和为 $? !"

这个函数会对输入的两个数字进行相加运算...

输入第一个数字:

1

输入第二个数字:

2

两个数字分别为 1 和 2 !

输入的两个数字之和为 3 !

函数返回值在调用该函数后通过 $? 来获得。

echo "...."echo 与 " 中间要有空格

函数参数

截图

重定向

截图

$ command2>file

如果希望将 stdout 和 stderr 合并后重定向到 file,可以这样写:

$ command > file 2>&1

或者

$ command >> file 2>&1

如果希望对 stdin 和 stdout 都重定向,可以这样写:

$ command < file1 >file2

command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2。

Here Document

Here Document 是 Shell 中的一种特殊的重定向方式,用来将输入重定向到一个交互式 Shell 脚本或程序。

它的基本的形式如下:

command << delimiter

   document

delimiter

它的作用是将两个 delimiter 之间的内容(document) 作为输入传递给 command。

注意:**结尾的delimiter 一定要顶格写,前面不能有任何字符,后面也不能有任何字符,包括空格和 tab 缩进。开始的delimiter前后的空格会被忽略掉。**

实例

在命令行中通过 wc -l 命令计算 Here Document 的行数:

$ wc-l << EOF

   欢迎来到

   我的世界

   www.runoob.com

EOF

3          # 输出结果为 3 行

$

我们也可以将 Here Document 用在脚本中,例如:

#!/bin/bash

# author:我的笔记

# url:www.com

cat << EOF

欢迎来到

shell教程

www.com

EOF

执行结果:

欢迎来到

shell教程

www.com

放在>后面的&,表示重定向的目标不是一个文件,而是一个文件描述符

文件包含

和其他语言一样,Shell 也可以包含外部脚本。这样可以很方便的封装一些公用的代码作为一个独立的文件。

Shell 文件包含的语法格式如下:

. filename   # 注意点号(.)和文件名中间有一空格

source filename

实例

创建两个 shell 脚本文件。

test1.sh 代码如下:

#!/bin/bash

# author:菜鸟教程

# url:www.runoob.com

url="http://www.runoob.com"

test2.sh 代码如下:

#!/bin/bash

# author:我的笔记

# url:www.com

#使用 . 号来引用test1.sh 文件

. ./test1.sh

# 或者使用以下包含文件代码

# source ./test1.sh

echo"教程官网地址:$url"

接下来,我们为 test2.sh 添加可执行权限并执行:

$ chmod+x test2.sh

$ ./test2.sh

shell教程官网地址:http://www.shell.com

注:被包含的文件 test1.sh 不需要可执行权限。

#test.sh

fun(){

echo"函数的操作"

echo"输入第一个数字:"

read aNum

echo"输入第二个数字:"

read another

echo"数字分别为$aNum$another"

return $(($aNum+$another))

}

fun

echo"输入两个的数之和为:$? !"

#test2.sh

./test.sh

echo"文件包含"

chmod +x test2.sh 给执行权限 ./test2.sh执行

函数的操作

输入第一个数字:

2

输入第二个数字:

5

数字分别为2 和 5

输入两个的数之和为:7 !

文件包含

目录
相关文章
|
5月前
|
安全 Linux 应用服务中间件
简简单单之Linux命令入门
简简单单之Linux命令入门
|
Java Shell Linux
适合初学者的Shell核心知识笔记(下)
适合初学者的Shell核心知识笔记(下)
|
Shell C语言
【手把手教你制作一个简易版的shell】
【手把手教你制作一个简易版的shell】
83 0
|
机器学习/深度学习 Shell Linux
适合初学者的Shell核心知识笔记(上)
适合初学者的Shell核心知识笔记(上)
|
JavaScript 前端开发 Java
什么是Shell?从小白到入门你只差一个它
什么是Shell?从小白到入门你只差一个它
282 0
什么是Shell?从小白到入门你只差一个它
|
存储 架构师 Shell
6条shell小技巧,让脚本显得不再业余(1分钟系列)
本篇文章源自Google的一篇实践,抽取了部分1分钟能读完的内容,加入了一些分析。
500 0
6条shell小技巧,让脚本显得不再业余(1分钟系列)
|
监控 Shell Linux
企业面试 shell 入门脚本试题
楔子最近喜欢上了脚本所以重头学习一下也巩固一下自己。 简单的日志清空 注意!这是测试环境可以随便清空。 cd /var/logcat /dev/null>messagesecho "Logs cleaned up.
951 0
|
Shell Linux Perl
《Linux命令行与shell脚本编程大全》第二十六章 一些有意思的脚本
26.1 发送消息 26.1.1 功能分析 1.确定系统中都有谁 $who 给出的信息包括用户名 用户所在终端 用户登入系统的时间   2.启用消息功能 用户可以禁止别人给我发消息,所以需要先检查一下是否允许发送消息。
1178 0
|
Web App开发 关系型数据库 Shell