Linux程序设计第二章 shell程序设计 笔记
2013-09-13 11:22
309 查看
1.Linux 哲学 首先在shell中实现工具的原型,确定之后再用其他编程语言进行实现。
2.文件描述符0代表程序的标准输入;文件描述符1代表标准输出;2代表标准错误输出;
$ kill -HUP 1234 >killoutree.txt 2>killerr.txt
重定向符号 > <
管道符号 |
不要在命令流中使用相同的文件名
3.把脚本设置微可执行 chmod +x first
4.shell变量,不需要事先做出声明只要在勇的时候创建他们。使用$符号来获取变量内容
用read来读取内容到变量中
5.$ 取变量值
6.注释用#
7.shell里面调用其他shell
fork ( /directory/script.sh)
fork是最普通的, 就是直接在脚本里面用/directory/script.sh来调用script.sh这个脚本.
运行的时候开一个sub-shell执行调用的脚本,sub-shell执行的时候, parent-shell还在。
sub-shell执行完毕后返回parent-shell. sub-shell从parent-shell继承环境变量.但是sub-shell中的环境变量不会带回parent-shell
[align=left]exec (exec /directory/script.sh)[/align]
exec与fork不同,不需要新开一个sub-shell来执行被调用的脚本. 被调用的脚本与父脚本在同一个shell内执行。但是使用exec调用一个新脚本以后, 父脚本中exec行之后的内容就不会再执行了。这是exec和source的区别
[align=left]source (source /directory/script.sh)[/align]
与fork的区别是不新开一个sub-shell来执行被调用的脚本,而是在同一个shell中执行. 所以被调用的脚本中声明的变量和环境变量, 都可以在主脚本中得到和使用.
8.#! /bin/bash ubuntu 默认使用的是dash,功能较弱,用bsah能解决source
not found 的问题
9.find 用于查找文件的命令
grep在文件中搜索字符串
简单的算术运算:expr
算术扩展:$((...))
参数扩展: ${i}_tmp
10.可以通过增加set 来决定调试选项,如set -o xtrace
11.特别注意if [ "$Q_MUSIC" = "1" ]; then 中 [ 必须左右都有空格,不能跟左右的内容联在一起 ; ] 必须与左边的内容空开,不能联在一起
12.trap trap 'commands' signal-list
, trap命令在shell接收到signal list清单中数值相同的信号时,将执行双引号中的命令串
13.man帮助的解释是,允许后面的输出进行转义,假设你是 echo -e "i will use \n $HOME" 输出的将是
i will use
/root(当前用户的主目录)
如果是 echo "i will use \n $HOME" 则输出是:
i will use \n $HOME
14.
${ } 用来作变量替换。一般情况下,$var 与 ${var} 并没有啥不一样。
但是用 ${ } 会比较精确的界定变量名称的范围
2.文件描述符0代表程序的标准输入;文件描述符1代表标准输出;2代表标准错误输出;
$ kill -HUP 1234 >killoutree.txt 2>killerr.txt
重定向符号 > <
管道符号 |
不要在命令流中使用相同的文件名
3.把脚本设置微可执行 chmod +x first
4.shell变量,不需要事先做出声明只要在勇的时候创建他们。使用$符号来获取变量内容
用read来读取内容到变量中
5.$ 取变量值
6.注释用#
7.shell里面调用其他shell
fork ( /directory/script.sh)
fork是最普通的, 就是直接在脚本里面用/directory/script.sh来调用script.sh这个脚本.
运行的时候开一个sub-shell执行调用的脚本,sub-shell执行的时候, parent-shell还在。
sub-shell执行完毕后返回parent-shell. sub-shell从parent-shell继承环境变量.但是sub-shell中的环境变量不会带回parent-shell
[align=left]exec (exec /directory/script.sh)[/align]
exec与fork不同,不需要新开一个sub-shell来执行被调用的脚本. 被调用的脚本与父脚本在同一个shell内执行。但是使用exec调用一个新脚本以后, 父脚本中exec行之后的内容就不会再执行了。这是exec和source的区别
[align=left]source (source /directory/script.sh)[/align]
与fork的区别是不新开一个sub-shell来执行被调用的脚本,而是在同一个shell中执行. 所以被调用的脚本中声明的变量和环境变量, 都可以在主脚本中得到和使用.
8.#! /bin/bash ubuntu 默认使用的是dash,功能较弱,用bsah能解决source
not found 的问题
9.find 用于查找文件的命令
grep在文件中搜索字符串
简单的算术运算:expr
算术扩展:$((...))
参数扩展: ${i}_tmp
10.可以通过增加set 来决定调试选项,如set -o xtrace
11.特别注意if [ "$Q_MUSIC" = "1" ]; then 中 [ 必须左右都有空格,不能跟左右的内容联在一起 ; ] 必须与左边的内容空开,不能联在一起
12.trap trap 'commands' signal-list
, trap命令在shell接收到signal list清单中数值相同的信号时,将执行双引号中的命令串
13.man帮助的解释是,允许后面的输出进行转义,假设你是 echo -e "i will use \n $HOME" 输出的将是
i will use
/root(当前用户的主目录)
如果是 echo "i will use \n $HOME" 则输出是:
i will use \n $HOME
14.
脚本名称叫test.sh 入参三个: 1 2 3 运行test.sh 1 2 3后 $*为"1 2 3"(一起被引号包住) $@为"1" "2" "3"(分别被包住) $#为3(参数数量)
15.
# a=123,345,456,4567 # echo ${a%%,*} 123 # echo ${a%,*} 123,345,456
%是向左最大匹配 %%是向左最小匹配
16.if [ -n "$cdttitle" ];
-n string 如果字符串不为空则结果为真
-z string 如果字符串为空则结果为真
判断cdttitle变量是否为空 c9cc ,如果cdttitle有内容则判断为真,无内容则执行else
17. shell中 用0 表示成功跟C 语言相反
18. $ls -l > lsoutput.txt 这条命令把ls命令的输出保存到文件lsoutput.txt中,如果该文件内容存在,文件的内容将被覆盖,
$ls -l >> lsoutput.txt ,这条命令将会把命令的输出附加到制定文件的尾部
$more < killout.txt 重定向输入
19. $() $(()) ${} 的区别
$()用来做命令替换用(command substitution)的
count=$(more iftmp|wc -l) |
但是用 ${ } 会比较精确的界定变量名称的范围
$(( )) 的用途吧:它是用来作整数运算的$ a=5; b=7; c=2 $ echo $(( a+b*c )) 19
20. set $(wc -l $title_file) ,,,,set是为shell设置参数变量
wc(word count) 功能说明:计算字数。 语 法:wc [-clw][--help][--version][文件...] 补充说明:利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。 参 数: -c或--bytes或--chars 只显示Bytes数。 -l或--lines 只显示列数。 -w或--words 只显示字数。 --help 在线帮助。 --version 显示版本信息。21.如果字符串里包括空格,就必须勇引号把他们括起来。此外等号两边不能有空格
22.shell 调试-n 只读取shell脚本,但不实际执行 -x 进入跟踪方式,显示所执行的每一条命令 -c "string" 从strings中读取命令
23.等号两边的空格问题。
定义变量时, =号的两边不可以留空格,gender=femal;
条件测试语句 [ 符号的两边都要留空格,if [ $gender = femal ]; then;
条件测试的内容,如果是字符串比较的话, 比较符号两边要留空格,if [ $gender = femal ]!
相关文章推荐
- linux程序设计——shell程序设计(第二章)
- linux程序设计——shell程序设计(第二章)
- linux程序设计——shell程序设计(第二章)
- Linux程序设计-学习笔记-第二章shell程序设计
- linux 程序设计笔记 第二章 shell
- 关于linux程序设计第二章CD数据库应用程序总结、
- Linux基础之简易Shell 程序设计
- Linux程序设计之shell程序设计
- [第二章 Linux程序设计] 349P 《linux程序设计》
- Linux shell 程序设计
- Linux程序设计--shell程序设计基础(二)
- Linux程序设计之shell
- linux程序设计:第一章:入门 第二章 :shell程序设计
- Linux程序设计-第二章-shell程序设计
- 高级Linux程序设计第二章:编写良好的Linux软件
- linux c/c++ 程序设计(二)shell程序编程
- 高级Linux程序设计第二章:编写良好的Linux软件
- shell 程序设计1--- 那些年我们一起学习linux程序设计
- 第二章 shell程序设计(2)
- shell 程序设计2--- 那些年我们一起学习linux程序设计