Linux中shell编程需要避免的坑之shell语法篇(四)
2017-04-24 10:53
274 查看
shell函数
1.带有返回值的函数,如下:
fun (){
a=10
b=20
echo "测试例子中的两个参数分别是$a 和 $b"
return $(($a+$b))
}
fun
echo "两数之和为 $? "
通过$?接收返回参数
注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,调用函数时候直接函数名调用即可。
2.传参函数,如下:
fun(){
echo "输出执行文件名$0"
echo "第一个参数$1"
echo "第二个参数$2"
echo "第三个参数$3"
}
fun 1 2 3
附注:当第十个参数时不能够$10去获取,当n>=10时,需要写成${10}。
shell的输入输出重定向
需要注意的是文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。
输出重定向示例
who > t.sh
结果:将命令who查出的信息输出到t.sh文件里面且会覆盖原有内容,若想末尾追加,使用>>操作符
输入重定向示例
从文件获取输入,读取内容
wc-l<
t.sh
统计文本里面的行数,不携带任何其他信息,为什么这么说呢,因为单独执行 wc -l t.sh时会输出行数和文件名,而输入重定向仅仅输出读取的内容!!!!!!
二者结合的例子(从左往右执行)
命令 < inputFile > outputFile
从inputFile 里面读取内容输出到outFile里面
重定向深入讲解(理解就好,不过多解释了)
一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:
标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。
默认情况下,command > file 将 stdout 重定向到 file,command < file 将stdin 重定向到 file。
如果希望 stderr 重定向到 file,可以这样写:
$ command2>
file
如果希望 stderr 追加到 file 文件末尾,可以这样写:
$ command2>>
file
2 表示标准错误文件(stderr)。
如果希望将 stdout 和 stderr 合并后重定向到 file,可以这样写:
$ command>
file2>&1或者$
command >> file2>&1
如果希望对 stdin 和 stdout 都重定向,可以这样写:
$ command<
file1>file2
command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2。
shell文件包含
包含外部脚本可以封装一些公用的代码作为一个独立的文件。
语法
. filename#
注意点号(.)和文件名中间有一空格或source filename
示例:
创建t1.sh文件内容:
a=50
创建t2.sh文件的内容:
. ./t1.sh
#或者
#source ./t1.sh
echo "参数a等于 $a"
授予执行权限 chmod +X t2.sh
执行./t2.sh
总结:
前三篇的例子运行在deepin ubantu 15.3 妥妥的没问题,第四篇讲完后Linux shell的基本知识也就到此为止了,后续添加一些实际当中会用到的一些脚本!活学活用!持续更新......
先来几个shell脚本小栗子: http://www.jb51.net/article/54488.htm http://justcoding.iteye.com/blog/1943504
1.带有返回值的函数,如下:
fun (){
a=10
b=20
echo "测试例子中的两个参数分别是$a 和 $b"
return $(($a+$b))
}
fun
echo "两数之和为 $? "
通过$?接收返回参数
注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,调用函数时候直接函数名调用即可。
2.传参函数,如下:
fun(){
echo "输出执行文件名$0"
echo "第一个参数$1"
echo "第二个参数$2"
echo "第三个参数$3"
}
fun 1 2 3
附注:当第十个参数时不能够$10去获取,当n>=10时,需要写成${10}。
shell的输入输出重定向
命令 | 说明 |
command > file | 将输出重定向到 file;注意任何file1内的已经存在的内容将被新内容替代。如果要将新内容添加在文件末尾,请使用>>操作符。 |
command < file | 将输入重定向到 file。 |
command >> file | 将输出以追加的方式重定向到 file。 |
n > file | 将文件描述符为 n 的文件重定向到 file。 |
n >> file | 将文件描述符为 n 的文件以追加的方式重定向到 file。 |
n >& m | 将输出文件 m 和 n 合并。 |
n <& m | 将输入文件 m 和 n 合并。 |
<< tag | 将开始标记 tag 和结束标记 tag 之间的内容作为输入 |
输出重定向示例
who > t.sh
结果:将命令who查出的信息输出到t.sh文件里面且会覆盖原有内容,若想末尾追加,使用>>操作符
输入重定向示例
从文件获取输入,读取内容
wc-l<
t.sh
统计文本里面的行数,不携带任何其他信息,为什么这么说呢,因为单独执行 wc -l t.sh时会输出行数和文件名,而输入重定向仅仅输出读取的内容!!!!!!
二者结合的例子(从左往右执行)
命令 < inputFile > outputFile
从inputFile 里面读取内容输出到outFile里面
重定向深入讲解(理解就好,不过多解释了)
一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:
标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。
默认情况下,command > file 将 stdout 重定向到 file,command < file 将stdin 重定向到 file。
如果希望 stderr 重定向到 file,可以这样写:
$ command2>
file
如果希望 stderr 追加到 file 文件末尾,可以这样写:
$ command2>>
file
2 表示标准错误文件(stderr)。
如果希望将 stdout 和 stderr 合并后重定向到 file,可以这样写:
$ command>
file2>&1或者$
command >> file2>&1
如果希望对 stdin 和 stdout 都重定向,可以这样写:
$ command<
file1>file2
command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2。
shell文件包含
包含外部脚本可以封装一些公用的代码作为一个独立的文件。
语法
. filename#
注意点号(.)和文件名中间有一空格或source filename
示例:
创建t1.sh文件内容:
a=50
创建t2.sh文件的内容:
. ./t1.sh
#或者
#source ./t1.sh
echo "参数a等于 $a"
授予执行权限 chmod +X t2.sh
执行./t2.sh
总结:
前三篇的例子运行在deepin ubantu 15.3 妥妥的没问题,第四篇讲完后Linux shell的基本知识也就到此为止了,后续添加一些实际当中会用到的一些脚本!活学活用!持续更新......
先来几个shell脚本小栗子: http://www.jb51.net/article/54488.htm http://justcoding.iteye.com/blog/1943504
相关文章推荐
- Linux中shell编程需要避免的坑之shell语法篇(一)
- Linux中shell编程需要避免的坑之shell语法篇(二)
- Linux中shell编程需要避免的坑之shell语法篇(三)
- Linux的Shell编程 Shell基本语法
- Linux的Shell编程之shell基本语法
- Linux的Shell编程 Shell基本语法
- Linux的Shell编程之shell基本语法
- 【Linux】Shell编程二(shell语法)
- Java for linux Runtime 执行需要转义的脚本(shell) 分类: Linux Java 2014-12-25 20:35 343人阅读 评论(2) 收藏
- Linux-Shell脚本编程-学习-6-Shell编程-使用结构化命令-文件比较-case编程
- UNIX/LINUX SHELL 正则表达式语法
- shell编程入门之shell基本语法介绍
- Shell编程(二)---Shell基本语法
- 【Linux】中shell脚本语法篇之条件语句和循环语句
- Linux脚本(shell)编程(二) 基本语法
- Linux shell script 的语法汇总
- Linux脚本(shell)编程(二) 基本语法
- linux 定时执行shell脚本 【并发送信息到指定邮件centos6需要yum install sendmail】
- Java for linux Runtime 执行需要转义的脚本(shell)
- linux 基础-变量,shell基本语法