shell读书笔记3

shell编程基础
1、在创建shell脚本文件时,必须在文件的第一行指定要使用的shell。其格式为:
#!/bin/bash
2、显示消息
A、默认情况下,不需要使用引号将要显示的文本字符串划定出来。
B、echo命令可用单引号或双引号来划定文本字符串。如果在字符串中用到了它们,你需要在
文本中使用其中一种引号,而用另外一种来将字符串划定起来。

	$ echo "This is a test to see if you're paying attention"
	This is a test to see if you're paying attention
	$ echo 'Rich says "scripting is easy".'
	Rich says "scripting is easy".
	$

C、但如果想把文本字符串和命令输出显示在同一行中,该怎么办呢?
可以用echo语句的-n参数。只要将第一个echo语句改成这样就行:

echo -n "The time and date are: "
D、`echo "The date and time are: " $testing`

3、使用变量
A、有两种方法可以将命令输出赋给变量:
1、反引号字符(`)
2、$()格式

	#!/bin/bash
	# copy the /usr/bin directory listing to a log file
	today=$(date +%y%m%d)
	ls /usr/bin -al > log.$today
	today变量是被赋予格式化后的date命令的输出。这是提取日期信息来生成日志文件名常用
	的一种技术。+%y%m%d格式告诉date命令将日期显示为两位数的年月日的组合。
	$ date +%y%m%d
	140131
	$

4、重定向输入和输出
4.1、输出重定向
最基本的重定向将命令的输出发送到一个文件中。bash shell用大于号(>)来完成这项功能:
command > outputfile
之前显示器上出现的命令输出会被保存到指定的输出文件中。

	$ date > test6
	$ ls -l test6
	-rw-r--r-- 1 user user 29 Feb 10 17:56 test6
	$ cat test6
	Thu Feb 10 17:56:58 EDT 2014

想要将命令的输出追加到已有文件中可以用双大于号(>>)来追加数据

	$ date >> test6
	$ cat test6
	user pts/0 Feb 10 17:55
	Thu Feb 10 18:02:14 EDT 2014
	$

test6文件仍然包含早些时候who命令的数据,现在又加上了来自date命令的输出

4.2、输入重定向
输入重定向将文件的内容重定向到命令
输入重定向符号是小于号(<):command < inputfile

这里有个和wc命令一起使用输入重定向的例子。
$ wc < test6
2 11 60
$
wc命令可以对对数据中的文本进行计数。默认情况下,它会输出3个值:
 文本的行数
 文本的词数
 文本的字节数
通过将文本文件重定向到wc命令,你立刻就可以得到文件中的行、词和字节的计数。这个例子说明test6文件有2行、11个单词以及60字节还有另外一种输入重定向的方法,称为内联输入重定向,内联输入重定向符号是远小于号(<<)除了这个符号,你必须指定一个文本标记来划分输入数据的开始和结尾。任何字符串都可作为文本标记,但在数据的开始和结尾文本标记必须一致。

	command << marker
	data
	marker

在命令行上使用内联输入重定向时,shell会用PS2环境变量中定义的次提示符(参见第6章)来提示输入数据。下面是它的使用情况。

	$ wc << EOF
	> test string 1
	> test string 2
	> test string 3
	> EOF
	3 9 42
	$

次提示符会持续提示,以获取更多的输入数据,直到你输入了作为文本标记的那个字符串。
wc命令会对内联输入重定向提供的数据进行行、词和字节计数

5、退出脚本
5.1、查看退出状态码
Linux提供了一个专门的变量$?来保存上个已执行命令的退出状态码

	$ date
	Sat Jan 15 10:01:30 EDT 2014
	$ echo $?
	0
	$

一个成功结束的命令的退出状态码是0。如果一个命令结束时有错误,退出状态码就是一个正数值。

	$ asdfg
	-bash: asdfg: command not found
	$ echo $?
	127
	$

5.2、exit 命令
退出状态码最大只能是255

		$ cat test14b
		#!/bin/bash
		# testing the exit status
		var1=10
		var2=30
		var3=$[$var1 * $var2]
		echo The value is $var3
		exit $var3
		$
		现在运行它的话,会得到如下输出。
		$ ./test14b
		The value is 300
		$ echo $?
		44
		$

指定的值是300(返回值),余数是44,因此这个余数就成了最后的状态退出码。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值