高级shell脚本编程之重定向、环境变量、shell函数、echo命令用法
2012-10-31 20:45
856 查看
高级shell脚本编程之重定向、环境变量、shell函数
shell并不局限于简单地逐行执行命令,更为强大的功能之一是能够创建函数和函数库。希望自定义命令行交互的方式或者自动化文件处理任务。考虑用shell脚本。
1、输入和输出重定向
STDIN
STDOUT
STDERR
重定向操作符
>
-------把STDOUT重定向到一个文件
<
-------把STDIN重定向到一个文件
>>
-------把STDOUT添加到一个文件的末尾
|
-------从一个程序或者进程获取输出,然后发送给另一个程序或进程
<<delimiter 把当前的输入流和STDIN关联起来直到到达指定的分隔符。
[root@localhost shell]# cat << END
> the cat
> sat on the
> Mat.
> END
the cat
sat on the
Mat.
[root@localhost shell]# cat << END
> the cat
> sat on the
> Mat.
> END
the cat
sat on the
Mat.
>操作符有几个修饰标记,这些标记可以改变他的行为。
>& STDOUT和STDERR同时进行重定向。
>! 将迫使文件以append模式创建,或者以normal模式覆盖一个已经存在的文件。
>@ 将以二进制模式打开一个文件
2、命令替换:反引号和圆括号扩展
#!/bin/sh
Lines=`wc -l filelist`
echo $Lines
[root@localhost shell]# ./p206
28 filelist
Lines=$(wc -l filelist) //符号扩展
3、使用环境变量和shell变量
export命令用于修改shell变量,不带选项会显示很多环境变量。
export PATH=/bin
set命令可查看环境中已设置的shell变量
4、Shell函数
<1>、形式
name() {command;}
shell函数必须声明之后才能使用。还可以有返回值
#!/bin/sh
repeat(){
echo -en "I don't know $1 $2\n"
echo -en "hello\n"
return 0
}
repeat Your Name
<2>、嵌套函数和递归
#!/bin/sh
number_one(){
echo "this is first one func speaking..."
number_two
}
number_two(){
echo "this is second func speaking...."
}
number_one
<3>、作用域
作用域包括全局域和局部域:使用local关键字标识局部变量
#!/bin/sh
scope(){
local soc=1
gblsoc=2
echo "local soc in func = $soc"
echo "global gblsoc in func = $gblsoc"
}
scope
echo "local soc outside func = $soc"
echo "gblsoc outside in func =$gblsoc"
exit 0
补充:echo命令用法:
echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
该命令的一般格式为: echo [ -n ] 字符串
其中选项n表示输出文字后不换行;字符串能加引号,也能不加引号。用echo命令输出加引号的字符串时,将字符串原样输出;用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割。
功能说明:显示文字。
语 法:echo [-ne][字符串]或 echo [--help][--version]
补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。
参 数:-n 不要在最后自动换行
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般
文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
–help 显示帮助
–version 显示版本信息
shell并不局限于简单地逐行执行命令,更为强大的功能之一是能够创建函数和函数库。希望自定义命令行交互的方式或者自动化文件处理任务。考虑用shell脚本。
1、输入和输出重定向
STDIN
STDOUT
STDERR
重定向操作符
>
-------把STDOUT重定向到一个文件
<
-------把STDIN重定向到一个文件
>>
-------把STDOUT添加到一个文件的末尾
|
-------从一个程序或者进程获取输出,然后发送给另一个程序或进程
<<delimiter 把当前的输入流和STDIN关联起来直到到达指定的分隔符。
[root@localhost shell]# cat << END
> the cat
> sat on the
> Mat.
> END
the cat
sat on the
Mat.
[root@localhost shell]# cat << END
> the cat
> sat on the
> Mat.
> END
the cat
sat on the
Mat.
>操作符有几个修饰标记,这些标记可以改变他的行为。
>& STDOUT和STDERR同时进行重定向。
>! 将迫使文件以append模式创建,或者以normal模式覆盖一个已经存在的文件。
>@ 将以二进制模式打开一个文件
2、命令替换:反引号和圆括号扩展
#!/bin/sh
Lines=`wc -l filelist`
echo $Lines
[root@localhost shell]# ./p206
28 filelist
Lines=$(wc -l filelist) //符号扩展
3、使用环境变量和shell变量
export命令用于修改shell变量,不带选项会显示很多环境变量。
export PATH=/bin
set命令可查看环境中已设置的shell变量
4、Shell函数
<1>、形式
name() {command;}
shell函数必须声明之后才能使用。还可以有返回值
#!/bin/sh
repeat(){
echo -en "I don't know $1 $2\n"
echo -en "hello\n"
return 0
}
repeat Your Name
<2>、嵌套函数和递归
#!/bin/sh
number_one(){
echo "this is first one func speaking..."
number_two
}
number_two(){
echo "this is second func speaking...."
}
number_one
<3>、作用域
作用域包括全局域和局部域:使用local关键字标识局部变量
#!/bin/sh
scope(){
local soc=1
gblsoc=2
echo "local soc in func = $soc"
echo "global gblsoc in func = $gblsoc"
}
scope
echo "local soc outside func = $soc"
echo "gblsoc outside in func =$gblsoc"
exit 0
补充:echo命令用法:
echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
该命令的一般格式为: echo [ -n ] 字符串
其中选项n表示输出文字后不换行;字符串能加引号,也能不加引号。用echo命令输出加引号的字符串时,将字符串原样输出;用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割。
功能说明:显示文字。
语 法:echo [-ne][字符串]或 echo [--help][--version]
补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。
参 数:-n 不要在最后自动换行
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般
文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
–help 显示帮助
–version 显示版本信息
相关文章推荐
- centos shell编程5 LANMP一键安装脚本 lamp sed lnmp 变量和字符串比较不能用-eq cat > /usr/local/apache2/htdocs/index.php <<EOF重定向 shell的变量和函数命名不能有横杠 平台可以用arch命令,获取是i686还是x86_64 curl 下载 第三十九节课
- Linux学习笔记(七)--RedHatEnterpriseLinux 7.0之管道符、重定向、环境变量、Vim编辑器与Shell命令脚本
- linux的shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量
- Shell脚本(脚本结构和执行方法,date命令用法,脚本中的变量)
- centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课
- shell脚本结构、date命令、变量 shell脚本中的逻辑判断 文件目录属性判断 if特殊用法 case判断
- Linux(7) 常用命令扩展 改变用户环境变量 (可以实现登陆就执行shell脚本)
- shell脚本介绍shell脚本结构和执行date命令用法shell脚本中的变量
- 20.1 Shell脚本介绍;20.2 Shell脚本结构和执行;20.3 date命令用法;20.4 Shell脚本中的变量
- shell脚本中使用自定义命令之一---使用环境变量的方式
- Linux下env、export、echo和set命令的用法与区别(Linux环境变量的设置)
- shell脚本介绍 Shell脚本结构和执行 date命令用法 Shell脚本中的变量
- Understanding Unix/Linux Programming 笔记:chapter 9:可编程的shell、shell变量和环境; chapter 10:I/O重定向和管道
- linux学习第六十三篇:Shell脚本介绍,Shell脚本结构和执行,date命令用法,Shell脚本中的变量
- shell脚本介绍、脚本结构和执行、date命令用法、脚本中的变量
- linux之基础shell脚本编程4 字符串操作,变量赋值,配置用户环境
- shell脚本介绍,shell脚本结构和执行,date命令用法,shell脚本中的变量
- [RedHat笔记]第三课:变量的种类及用法,alias命令,环境变量的分类和修改,输入输出重定向,for循环,文本处理类命令,grep命令,短路操作(&& ||)