Linux程序设计第二章 shell程序设计 笔记
来源:互联网 发布:羽毛球比赛直播软件 编辑:程序博客网 时间:2024/04/28 19:57
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
- exec (exec /directory/script.sh)
exec与fork不同,不需要新开一个sub-shell来执行被调用的脚本. 被调用的脚本与父脚本在同一个shell内执行。但是使用exec调用一个新脚本以后, 父脚本中exec行之后的内容就不会再执行了。这是exec和source的区别
- source (source /directory/script.sh)
8.#! /bin/bash ubuntu 默认使用的是dash,功能较弱,用bsah能解决source not found 的问题与fork的区别是不新开一个sub-shell来执行被调用的脚本,而是在同一个shell中执行. 所以被调用的脚本中声明的变量和环境变量, 都可以在主脚本中得到和使用.
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变量是否为空,如果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)
${ } 用来作变量替换。一般情况下,$var 与 ${var} 并没有啥不一样。
但是用 ${ } 会比较精确的界定变量名称的范围
$(( )) 的用途吧:它是用来作整数运算的$ 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程序设计
- 第二章 Shell程序设计
- 第二章 Shell程序设计
- 第二章 shell程序设计
- 第二章 shell程序设计
- 《Linux程序设计第四版》读书笔记 - 第二章 Shell程序设计
- linux程序设计——shell程序设计(第二章)
- linux程序设计——shell程序设计(第二章)
- linux程序设计——shell程序设计(第二章)
- linux程序设计:第一章:入门 第二章 :shell程序设计
- Linux Shell 程序设计 笔记
- Linux程序设计笔记 第2章shell程序设计
- Linux程序设计第二章
- 第二章 shell程序设计(1)
- 第二章 shell程序设计(2)
- tomcat 性能解析与优化
- java自学者必看视频
- css秘籍:复选框与文字对齐的问题
- JAVA帮助文档全系列
- android在工业中的应用资料收集
- Linux程序设计第二章 shell程序设计 笔记
- linux ftp 服务器搭建
- ABAP 常用的系统变量說明
- 批量将Java源代码文件的编码从GBK转为UTF-8
- Java算法——O(n)查询数列中出现超过半数的元素
- 指针秘密之字符串常量
- [K/3Cloud] 单据转换插件执行顺序
- AC算法详解
- 整型与字符型之间转化