Shell脚本学习笔记(一)

(文中粗体为输入命令,细体为输出)

脚本语言的优缺点:

使用脚本语言的优点是:它们多半运行在比编译型语言还高的层级,可以轻易处理文件与目录之类的对象。

缺点:效率不如编译型语言。

我们使用Shell脚本,主要是基于:

1,简单性。Shell是高级语言,通过Shell可以简洁地表达复杂操作。

2,可移植性。使用POSIX所定义的功能,能做到无需修改脚本就可以在不同系统运行。

3,开发容易。短时间内完成一个功能强大的脚本。


#!的作用:

可以通过在脚本文件第一行使用#!来告知UNIX内核 调用哪个Shell执行脚本。具体用法:#!+ Shell路径。

例:#! /bin/sh  

调用/bin/sh解释脚本。

注意:#!有长度限制,各系统不同,使用时尽量不超过64个字符。


变量赋值方法:

先写变量名称,紧接=字符,最后是新值。当取出Shell变量的值时,在变量名称前加上$。


输出命令:

echo [string]  产生Shell脚本输出,输出最后带换行符,添加\c可不打印。
printf  类似C的printf用法。

重定向与管道:

tr命令
tr [options] source-char-file-list replace-char-list
用途:转换字符,详见选项。

以<改变标准输入
program < file可将program的标准输入改为file。
例:tr -d '\r' < dos-file.txt  将dos-file.txt中的回车删除。

以>改变标准输入
program > file可将program的标准输出改为file。
例:tr -d '\r' < dos-file.txt > UNIX-file.txt  将dos-file.txt中的回车删除后输出到UNIX-file.txt。

以>>附加到文件
program >> file可将program的标准输出附加到file的尾部。

以|建立管道
program1 | program2 可将program1的标准输出修改为program2的标准输入。
例:tr -d '\r' < dos-file.txt | sort > UNIX-file.txt  将dos-file.txt中的回车删除后,以管道传送进行排序,再输出到UNIX-file.txt。

基本命令查找:

最好准备自己的bin目录存放自己的脚本,并且让Shell能够自动寻找到它们。
例:
$ cd                                                        切换到home目录
$ mkdir bin                                            建立个人bin目录
$ mv nuser bin                                     将自己的脚本置入该目录
$ PATH=$PATH:$HOME/bin              将个人bin目录附加到PATH
$ nuser                                                  直接输入文件名执行
      显示文件内容

简单执行跟踪:

在命令行中执行跟踪:(测试脚本为nuser)
例:
$ sh -x nuser         打开执行跟踪功能
+ who                       被跟踪的命令
+ wc -1
            7                    实际的输出

在脚本里执行跟踪:
例:
$ cat > trace1.sh             建立脚本
#! /bin/sh                            打开跟踪功能
set -x                                  做些事
echo 1st echo

set +x                                  关闭跟踪功能
echo 2nd echo                  再做些事
^D                                         以end-of-file结尾

$ chmod +x trace1.sh     设置执行权限

$ ./trace1.sh                       执行脚本
+ echo 1st echo                被跟踪的第一行
1st cho                                命令的输出
+ set +x                               被跟踪的下一行
2nd echo                             下一个命令的输出
执行时,set -x不会被跟踪,因为跟踪命令在这条命令执行后才打开。同理,set +x会被跟踪,因为跟踪功能在这条命令执行后才关闭。最后echo命令不被跟踪,因为此时跟踪功能已经关闭。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值