Shell脚步编程(二)

作者: zhang_pan | 来源:发表于2018-02-28 20:15 被阅读60次

脚本传参

使用$0代表脚本的相对路径

#!/bin/bash              
filename=$(basename $0)
echo $filename
echo $0
echo $1
echo $2
echo $3

给脚本赋值:

./14.sh 7 10 9

其中14.sh是脚本的名称,7,10,9分别给变量1,2,3赋值,执行后的输出结果为:

14.sh
./14.sh
7
10
9

使用$#表示参数的总数,使用$@来遍历所有参数:

#!/bin/bash
filename=$(basename $0)
echo $filename
echo $0
echo $1
echo $2
echo $3
echo "参数的总数:$#"
for param in "$@";
do
  echo "param:$param"
done

给脚本赋值:

./14.sh 7 10 9

执行后的输出结果为:

14.sh
./14.sh
7
10
9
参数的总数:3
param:7
param:10
param:9

输入输出重定向

标准输入输出:

0    STDIN      标准输入
1    STDOUT     标准输出
2    STDERR     标准错误

1.如下,默认是输出到控制台:

#!/bin/bash                
echo "yy"
echo "zz"

要将上述输出到test文件中,可以在控制台输入:

./15.sh 1>test

这样就可以将输出重定向到test文件中,我们可以验证一下,控制台输入:

cat test

可以看见test中:

yy
zz

这表示已经将输出重定向到test文件中了,但是这样并不够,我们想要在shell脚本中,将每个输出都重定向到一个文件中,显然在控制台输入这样的命令是不够的,我们需要统一处理:

#!/bin/bash                                     
exec 1>test2
echo "yy"
echo "zz"

其中exec 1>test2就是做这样的处理的,将脚本中所有的输出重定向到test2文件中,在控制台输入./15.sh,即可实现重定向,我们可以同上验证。
2.将标准错误输出到文件中:

#!/bin/bash                                       
exec 1> test3
exec 2> test4
echo "yy"
echo "zz"
ls -a "./f"

这里没有f文件,所以ls -a "./f"将会报错,这里将报错的内容都重定向到test4文件中。
3.自定义输出:

#!/bin/bash                                
exec 1> test3
exec 2> test4
exec 7> test5
echo "yy" >&7
echo "zz"
ls -a "./f"

这里就将yy自定义输出到test5文件中,注意>&7之间不能有空格,自定义输出一般用的很好,做为了解就行。

函数调用

#!/bin/bash
#第一种方式
function myfun
{
   echo "myfun函数"
}

#第二种方式
myfun()
{                                 
   echo "myfun2函数"
}
myfun

上述存在两种方式,分别是用function标注和用()去表示函数myfun,两种方式都可以,一般我会用第一种方式。这里存在函数覆盖的,第二种方式的写在第一种方式的下面,会覆盖第一种方式。而第一种方式的写法又有多种,如:

function myfun {
   echo "myfun函数"
}

这里myfun{之间存在空格,否则会报错,还可以这样写:

function myfun(){
   echo "myfun函数"
}

函数传参、返回值

#!/bin/bash                                
function myfun
{
   echo $[ $1 + $2 ]
}
value=$(myfun 8 5)
echo "value:$value"

执行结果为:

value:13

跨脚本调用

被调用的函数库脚本18.sh

#!/bin/bash                                     
#函数库
function add()
{
   echo $[ $1 + $2 ]
}

调用18.sh的脚本17.sh

#!/bin/bash                       
#引入 ./18.sh
#source ./18.sh
. ./18.sh

function myfun(){
   echo $value
}

value=20
myfun
echo "add value:$(add 10 20)"

其中.就是source的快捷别名。

相关文章

  • Shell脚步编程(二)

    脚本传参 使用$0代表脚本的相对路径 给脚本赋值: 其中14.sh是脚本的名称,7,10,9分别给变量1,2,3赋...

  • shell 案例

    Shell编程一 Shell防范ARP攻击 Shell编程二 Shell防范DDos攻击 Shell编程三 ...

  • Shell脚步编程(一)

    1. 前言 前面我们学习了Linux相关的命令,接下来我们将进入真正的主题——shell脚步编程。 2. 直接执行...

  • BigData~01:Shell

    Shell编程基础 内容大纲 一、Shell编程二、高级文本处理命令:sed、awk、cut三、crontab定时...

  • shell 第一天

    shell编程初识 1.1 shell编程初识 shell的定义 Shell 是命令解释器 Shell 也是...

  • Shell编程系列(三)-- 运算符

    前言 在上一篇文章Shell编程系列(二)-- Bash 变量中, 我们学习了Shell编程中的变量相关的知识。...

  • shell编程(二)

    变量 局部变量 环境变量-----export 一个用户的所有进程中都可以访问的变量 环境变量的命令一...

  • shell编程(二)

    一、字符串比对 字符串必须使用双引号-n //nozero 字符串长度不为0时为真-z //zero 字符串长度为...

  • shell编程(二)

    样例 注意:shell代码中linux命令中有交互命令的,以<<EOF开头,以EOF结尾。中间写交互命令,命令要顶...

  • shell编程二

    目录 一、shell中的函数二、shell中的数组三、shell告警系统 一、shell中的函数 函数就是把一段代...

网友评论

    本文标题:Shell脚步编程(二)

    本文链接:https://www.haomeiwen.com/subject/ctujoxtx.html