Learning–shell(1)

shell执行一个程序时,会要求UNIX内核启动一个新的进程,以便在该进程里执行所指定的程序。
1.位于第一行的#!–内核会扫描该行其余部分,看是否存在可用来执行程序的解释权的完整路径
shell脚本通常一开始都是#! /bin/sh

2.变量:变量名=新值(可以为空值) 注:若所赋值内含有空格,加上引号  eg.fullname=”I am learning python”
需要使用变量时变量名称前面加上$字符,也可作为第二个变量的新值   eg.oldname=$fullname
连接不同的变量也需要引号  eg. fullname=”$first $middle $last”

3.echo
原始echo命令将参数打印到标准输出,参数之间以空格隔开,以换行符结尾。它会解释每个字符串里的转义序列。转义序列可用来表示特殊字符,以及控制其行为模式。转移序列如下:

\a–警示字符,用来引起用户注意
\b–退格
\c–输出中忽略最后的换行字符。这个参数之后的任何字符都会被忽略掉(不打印)
\f–清楚屏幕
\n–换行
\r–回车
\t–水平制表符
\v–垂直制表符
\\–反斜杠字符
\0ddd–将字符表示成1到3位的八进制数值

4.复杂的输出–printf
printf format-string [arguments…]
format-string:字符串,用来描述输出的排列方式,最好为此字符串加上引号。
此字符串包含了三部分:characters to be printed literally+format specifications+placeholders。
argument:与格式声明(%指示符)对应的参数列表。
eg. >printf  “The first program always prints ‘%s, %s!’ \n”  Hello world
>The first program always prints  ‘Hello, world!’

5.I/O重定向

  • 以<改变标准输入  tr -d ‘\r’ < dos-file.txt
  • 以>改变标准输出  tr -d ‘\r’ < dos-file.txt > UNIX-file.txt     注:目的文件不存在时新建,若已存在,则覆盖,原本的数据丢失
  • 以 >>附加到文件
  • 以|建立管道  tr -d ‘\r’ < dos-file.txt |sort > UNIX-file.txt   第一个程序的标准输出可以变成第二个程序的标准输入,相比于<>好处是使得执行速度比使用临时文件的程序快上十倍

6.访问shell脚本的参数
echo first arg is $1
echo first arg is ${10}–注:超过9,需要大括号

Leave a Reply

Your email address will not be published. Required fields are marked *