Note For Linux By Jes(7)-学习 shell scripts
2015-08-24 22:07
691 查看
简单的shellscript
练习:
script 的运行方式差异(source, sh script, ./script)
利用直接运行的方式来运行script
利用source
来运行脚本:在父程序中运行
善用判断式:
利用test
命令的测试功能
利用判断符号[ ]
Shell script 的默认变量($0,$1…)
$# :代表后接的参数『个数』,以上表为例这里显示为『4
』;
$@ :代表『"$1""$2" "$3" "$4"
』之意,每个变量是独立的(用双引号括起来);
$* :代表『"$1c$2c$3c$4"』,其中c为分隔字节,默认为空白键,所以本例中代表『
"$1$2 $3 $4" 』之意。
shift:造成参数变量号码偏移
条件判断式:
利用if .... then
for...do...done (固定回圈)
for...do...done 的数值处理:
shellscript
的追踪与debug:
sh -x
练习:
script 的运行方式差异(source, sh script, ./script)
利用直接运行的方式来运行script
利用source
来运行脚本:在父程序中运行
善用判断式:
利用test
命令的测试功能
测试的标志 | 代表意义 |
1. 关於某个档名的『文件类型』判断,如test -e filename 表示存在否 | |
-e | 该『档名』是否存在?(常用) |
-f | 该『档名』是否存在且为文件(file)?(常用) |
-d | 该『档名』是否存在且为目录(directory)?(常用) |
-b | 该『档名』是否存在且为一个block device 装置? |
-c | 该『档名』是否存在且为一个character device 装置? |
-S | 该『档名』是否存在且为一个Socket 文件? |
-p | 该『档名』是否存在且为一个FIFO (pipe) 文件? |
-L | 该『档名』是否存在且为一个连结档? |
2. 关於文件的权限侦测,如test -r filename 表示可读否(但root 权限常有例外) | |
-r | 侦测该档名是否存在且具有『可读』的权限? |
-w | 侦测该档名是否存在且具有『可写』的权限? |
-x | 侦测该档名是否存在且具有『可运行』的权限? |
-u | 侦测该档名是否存在且具有『SUID』的属性? |
-g | 侦测该档名是否存在且具有『SGID』的属性? |
-k | 侦测该档名是否存在且具有『Stickybit』的属性? |
-s | 侦测该档名是否存在且为『非空白文件』? |
3. 两个文件之间的比较,如:test file1 -nt file2 | |
-nt | (newer than)判断file1 是否比file2 新 |
-ot | (older than)判断file1 是否比file2 旧 |
-ef | 判断file1 与file2 是否为同一文件,可用在判断hard link 的判定上。主要意义在判定,两个文件是否均指向同一个 inode哩! |
4. 关於两个整数之间的判定,例如test n1 -eq n2 | |
-eq | 两数值相等(equal) |
-ne | 两数值不等(not equal) |
-gt | n1 大於n2 (greater than) |
-lt | n1 小於n2 (less than) |
-ge | n1 大於等於n2 (greater than or equal) |
-le | n1 小於等於n2 (less than or equal) |
5. 判定字串的数据 | |
test -z string | 判定字串是否为0 ?若string 为空字串,则为true |
test -n string | 判定字串是否非为0 ?若string 为空字串,则为false。 注:-n 亦可省略 |
test str1 = str2 | 判定str1 是否等於str2 ,若相等,则回传true |
test str1 != str2 | 判定str1 是否不等於str2 ,若相等,则回传false |
6. 多重条件判定,例如:test -r filename -a -x filename | |
-a | (and)两状况同时成立!例如test -r file -a -x file,则file 同时具有r 与x 权限时,才回传true。 |
-o | (or)两状况任何一个成立!例如test -r file -o -x file,则file 具有r 或x 权限时,就可回传true。 |
! | 反相状态,如test ! -x file ,当file 不具有x 时,回传true |
Shell script 的默认变量($0,$1…)
/path/to/scriptname opt1 opt2 opt3 opt4 $0 $1 $2 $3 $4
$# :代表后接的参数『个数』,以上表为例这里显示为『4
』;
$@ :代表『"$1""$2" "$3" "$4"
』之意,每个变量是独立的(用双引号括起来);
$* :代表『"$1c$2c$3c$4"』,其中c为分隔字节,默认为空白键,所以本例中代表『
"$1$2 $3 $4" 』之意。
shift:造成参数变量号码偏移
条件判断式:
利用if .... then
利用 case ..... esac 判断 利用 function 功能:function 也是拥有内建变量的~他的内建变量与 shell script 很类似, 函数名称代表示 $0 ,而后续接的变量也是以 $1, $2... 来取代的 回圈 (loop): while do done, until do done (不定回圈)
for...do...done (固定回圈)
for...do...done 的数值处理:
for (( 初始值; 限制值; 运行步阶 )) do 程序段 done
shellscript
的追踪与debug:
sh -x
相关文章推荐
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
- mac shell 设置dns
- bash shell的基础特性之一
- bash shell基础特性之二
- Bash基础(1)
- [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理
- LeetCode:solution of shell problems
- shell 显示百分数
- shell 显示百分数
- [转] Linux 之 /etc/profile、~/.bash_profile 等几个文件的执行过程
- Linux 下的shell快捷键
- Shell编程基础
- linux bash总结(二) 高级部分(适合初学者学习和非初学者参考)
- 20150823-Bash的基础特性(2)
- 20150823-Bash的基础特性(1)
- Office 365 IT Professional——利用PowerShell设置Password 永不过期
- Office 365 IT Professional——利用PowerShell更改Password 永不过期时间和提醒时间
- 【简单学习shell】iptables命令实用
- Shell screen的用法
- [PowerShell]template engine