linuxshell 读书笔记六 (unix shell 第三版)
来源:互联网 发布:linux 中搭建php环境 编辑:程序博客网 时间:2024/05/21 22:32
--打开跟踪 相当于 sh -x 但不跟踪子shell
[xep@localhost ~]$ set -x
++ echo -ne '\033]0;xep@localhost:~'
[xep@localhost ~]$ pwd
+ pwd
/home/xep
++ echo -ne '\033]0;xep@localhost:~'
--关闭跟踪
[xep@localhost ~]$ set +x
+ set +x
--set 后面跟的字符 会存入相应该的参数中 如下
[xep@localhost ~]$ set f1 s1 5
[xep@localhost ~]$ echo $1,$2,$3
f1,s1,5
[xep@localhost ~]$ echo $#
3
[xep@localhost ~]$ echo $*
f1 s1 5
[xep@localhost ~]$ echo $@
f1 s1 5
--set 遇到-(减号)认为是参数 所以把所有的参数都列了出来
[xep@localhost ~]$ set -1
-bash: set: -1: invalid option
set: usage: set [--abefhkmnptuvxBCHP] [-o option] [arg ...]
--用两个--(减号)来解决赋值的问题
[xep@localhost ~]$ set -- -1 -2 3
[xep@localhost ~]$ echo $1,$2,$3
-1,-2,3
--IFS (internal field seperator) 内部字段分隔符
[xep@localhost ~]$ echo ":$IFS:"
:
:
--转换成八进制显示
[xep@localhost ~]$ echo "$IFS"|od -d
0000000 2336 2570
0000004
[xep@localhost ~]$ TIFS=$IFS --备份ifs
[xep@localhost ~]$ IFS=":" --修改
[xep@localhost ~]$ read line --读取
123:456:678
[xep@localhost ~]$ echo $line
123 456 678
[xep@localhost ~]$ read p1 p2 p3
123:456:567
[xep@localhost ~]$ echo $p1,$p2,$p3 --已应用到各变量中
123,456,567
[xep@localhost ~]$ IFS=$TIFS --改回
[xep@localhost ~]$ read p1 p2 p3
123:456:567
[xep@localhost ~]$ echo $p1,$p2,$p3 --接受默认的空格分隔
123:456:567,,
--readonly变量
[xep@localhost ~]$ readonly test=123
[xep@localhost ~]$ test=456
-bash: test: readonly variable
readonly -p --显示只读变量
--用unset可以删除导出变量 和 局部变量 但对只读变量不起作用
[xep@localhost ~]$ TIFS=$IFS
[xep@localhost ~]$ unset TIFS
[xep@localhost ~]$ echo $TIFS
[xep@localhost ~]$ unset test
-bash: unset: test: cannot unset: readonly variable
eval使shell在执行命令时候扫描它两次
[xep@localhost ~]$ pipe="|"
[xep@localhost ~]$ ls $pipe wc -l
ls: |: No such file or directory
ls: wc: No such file or directory
[xep@localhost ~]$ pipe=`|`
-bash: command substitution: line 1: syntax error near unexpected token `|'
-bash: command substitution: line 1: `|'
[xep@localhost ~]$ eval ls $pipe wc -l
ls: wc: No such file or directory
[xep@localhost ~]$ echo $pipe
[xep@localhost ~]$ pipe="|"
[xep@localhost ~]$ echo $pipe
|
[xep@localhost ~]$ eval ls $pipe wc -l
41
--eval第一次扫描,把变量pipe的值替换成|,接着eval使它再次执行时候就能顺利执行
[xep@localhost ~]$ cat -n showlastp_script
1 #! /bin/bash
2 # show last parameter
3
4 eval echo \$$#
[xep@localhost ~]$ ./showlastp_script 41 53 67 99
99
--说明:第一次把$#转换成了参数的个数 第二执行时 就变成了 echo $4
--这个例子不太好理解了 好好研究下吧
[xep@localhost ~]$ cat -n point_script
1 #! /bin/bash
2 # use eval like point
3
4 x=100
5 ptrx=x --ptrx中存的是x
6 eval echo \$$ptrx --将$ptrx 转换成 x
7
8 eval $ptrx=50 --将$ptrx转换为x
9 echo $x
[xep@localhost ~]$ ./point_script
100
50
--wait process_id 等待process_id执行完 再执行
[xep@localhost ~]$ sort intro > intro_bak &
[1] 28321
[xep@localhost ~]$ date
Sun Oct 30 21:39:13 CST 2011
[xep@localhost ~]$ wait 28321
--如果wait 不带参数 则等待所有的子进程完成
--用$!保存最后一个后台运行进程的process_ID
[xep@localhost ~]$ sort intro &
[1] 28341
[xep@localhost ~]$ pro1=$!
[xep@localhost ~]$ echo $pro1
28341
[xep@localhost ~]$ sort intro &
[1] 28347
[xep@localhost ~]$ pro2=$!
[xep@localhost ~]$ echo $pro2
28347
[xep@localhost ~]$ wait 28347
...
...
[xep@localhost ~]$ wait &pro1
[xep@localhost ~]$ set -x
++ echo -ne '\033]0;xep@localhost:~'
[xep@localhost ~]$ pwd
+ pwd
/home/xep
++ echo -ne '\033]0;xep@localhost:~'
--关闭跟踪
[xep@localhost ~]$ set +x
+ set +x
--set 后面跟的字符 会存入相应该的参数中 如下
[xep@localhost ~]$ set f1 s1 5
[xep@localhost ~]$ echo $1,$2,$3
f1,s1,5
[xep@localhost ~]$ echo $#
3
[xep@localhost ~]$ echo $*
f1 s1 5
[xep@localhost ~]$ echo $@
f1 s1 5
--set 遇到-(减号)认为是参数 所以把所有的参数都列了出来
[xep@localhost ~]$ set -1
-bash: set: -1: invalid option
set: usage: set [--abefhkmnptuvxBCHP] [-o option] [arg ...]
--用两个--(减号)来解决赋值的问题
[xep@localhost ~]$ set -- -1 -2 3
[xep@localhost ~]$ echo $1,$2,$3
-1,-2,3
--IFS (internal field seperator) 内部字段分隔符
[xep@localhost ~]$ echo ":$IFS:"
:
:
--转换成八进制显示
[xep@localhost ~]$ echo "$IFS"|od -d
0000000 2336 2570
0000004
[xep@localhost ~]$ TIFS=$IFS --备份ifs
[xep@localhost ~]$ IFS=":" --修改
[xep@localhost ~]$ read line --读取
123:456:678
[xep@localhost ~]$ echo $line
123 456 678
[xep@localhost ~]$ read p1 p2 p3
123:456:567
[xep@localhost ~]$ echo $p1,$p2,$p3 --已应用到各变量中
123,456,567
[xep@localhost ~]$ IFS=$TIFS --改回
[xep@localhost ~]$ read p1 p2 p3
123:456:567
[xep@localhost ~]$ echo $p1,$p2,$p3 --接受默认的空格分隔
123:456:567,,
--readonly变量
[xep@localhost ~]$ readonly test=123
[xep@localhost ~]$ test=456
-bash: test: readonly variable
readonly -p --显示只读变量
--用unset可以删除导出变量 和 局部变量 但对只读变量不起作用
[xep@localhost ~]$ TIFS=$IFS
[xep@localhost ~]$ unset TIFS
[xep@localhost ~]$ echo $TIFS
[xep@localhost ~]$ unset test
-bash: unset: test: cannot unset: readonly variable
eval使shell在执行命令时候扫描它两次
[xep@localhost ~]$ pipe="|"
[xep@localhost ~]$ ls $pipe wc -l
ls: |: No such file or directory
ls: wc: No such file or directory
[xep@localhost ~]$ pipe=`|`
-bash: command substitution: line 1: syntax error near unexpected token `|'
-bash: command substitution: line 1: `|'
[xep@localhost ~]$ eval ls $pipe wc -l
ls: wc: No such file or directory
[xep@localhost ~]$ echo $pipe
[xep@localhost ~]$ pipe="|"
[xep@localhost ~]$ echo $pipe
|
[xep@localhost ~]$ eval ls $pipe wc -l
41
--eval第一次扫描,把变量pipe的值替换成|,接着eval使它再次执行时候就能顺利执行
[xep@localhost ~]$ cat -n showlastp_script
1 #! /bin/bash
2 # show last parameter
3
4 eval echo \$$#
[xep@localhost ~]$ ./showlastp_script 41 53 67 99
99
--说明:第一次把$#转换成了参数的个数 第二执行时 就变成了 echo $4
--这个例子不太好理解了 好好研究下吧
[xep@localhost ~]$ cat -n point_script
1 #! /bin/bash
2 # use eval like point
3
4 x=100
5 ptrx=x --ptrx中存的是x
6 eval echo \$$ptrx --将$ptrx 转换成 x
7
8 eval $ptrx=50 --将$ptrx转换为x
9 echo $x
[xep@localhost ~]$ ./point_script
100
50
--wait process_id 等待process_id执行完 再执行
[xep@localhost ~]$ sort intro > intro_bak &
[1] 28321
[xep@localhost ~]$ date
Sun Oct 30 21:39:13 CST 2011
[xep@localhost ~]$ wait 28321
--如果wait 不带参数 则等待所有的子进程完成
--用$!保存最后一个后台运行进程的process_ID
[xep@localhost ~]$ sort intro &
[1] 28341
[xep@localhost ~]$ pro1=$!
[xep@localhost ~]$ echo $pro1
28341
[xep@localhost ~]$ sort intro &
[1] 28347
[xep@localhost ~]$ pro2=$!
[xep@localhost ~]$ echo $pro2
28347
[xep@localhost ~]$ wait 28347
...
...
[xep@localhost ~]$ wait &pro1
- linuxshell 读书笔记六 (unix shell 第三版)
- linuxshell 读书笔记 (unix shell 第三版)
- linuxshell 读书笔记二 (unix shell 第三版)
- linuxshell 读书笔记三 (unix shell 第三版)
- linuxshell 读书笔记四 (unix shell 第三版)
- linuxshell 读书笔记五 (unix shell 第三版)
- UNIX Shell 编程读书笔记
- Unix Shell编程(第三版)学习笔记
- 读书笔记《Unix编程艺术》六
- linuxshell 脚本攻略读书笔记
- 读书笔记-APUE第三版-(1)UNIX系统概述
- 读书笔记-APUE第三版-(2)UNIX标准和实现
- Unix网络编程读书笔记(六)
- Unix® Shell Programming读书笔记1
- Unix® Shell Programming读书笔记2
- Unix® Shell Programming读书笔记3
- Unix® Shell Programming读书笔记4(END)
- unix shell编程(读书笔记1):基础回顾
- MFC 读写配置文件
- [内核文档]RCU相关概念
- ResourceManager使用
- TCP三次握手连接及seq和ack号的正确理解
- CD光盘版本对音质的影响
- linuxshell 读书笔记六 (unix shell 第三版)
- 在matlab中加入文件夹搜索路径和去除文件夹搜索路径
- 工作中碰到的memory footprint很高的问题
- 苹果反间谍趣闻:曾把产品放在番茄箱子里运输
- Activity的taskAffinity属性
- 整型和字符串相互转化
- Tun 与 Tap 的区别是什么
- myeclipse 调试
- python中神奇的星号