Linux学习之shell编程一
来源:互联网 发布:淘宝分享到微信打不开 编辑:程序博客网 时间:2024/05/16 17:41
获取变量的值可以使用$var或者${var}后者可以预防变量读取错误。$(command)可以获得命令的执行结果。
1. shell脚本的书写格式
1 #!/bin/bash 2 #程序说明(包括日期,作者,程序作用等信息) 3 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin 4 echo -e "Hello World!\a\n" 5 exit 0
2. 条件判断
(1)利用test命令测试功能
例如查看某一文件是否存在:test -e filename
test -e poem.txt && echo "exist"||echo "Not exist"当poem.txt存在时才会执行echo "exist",否则执行echo "Not exist"。
test命令关于文件的选项有以下几个:
-b file 如果文件为一个块特殊文件,则为真
-c file 如果文件为一个字符特殊文件,则为真
-d file 如果文件为一个目录,则为真
Sr:V\3J0-e file 如果文件存在,则为真
-f file 如果文件为一个普通文件,则为真
-g file 如果设置了文件的 SGID 位,则为真
-G file 如果文件存在且归该组所有,则为真
-k file 如果设置了文件的粘着位,则为真
-O file 如果文件存在并且归该用户所有,则为真
-p file 如果文件为一个命名管道,则为真
-r file 如果文件可读,则为真
-s file 如果文件的长度不为零,则为真
-S file 如果文件为一个套接字特殊文件,则为真
-t fd 如果 fd 是一个与终端相连的打开的文件描述符(fd 默认为 1),则为真
-u file 如果设置了文件的 SUID 位,则为真
-w file 如果文件可写,则为真
-x file 如果文件可执行,则为真
另外关于两个文件之间的比较选项有:
-ef
-nt
-ot
test file1 -ef file2测试以判断两个文件是否与同一个设备相连,是否拥有相同的 inode 编号
test file1 -nt file2 测试以判断第一个文件是否比第二个文件更新(由修改日期决定)
test file1 -ot file2 测试以判断第一个文件是否比第二个文件更旧
关于字符串的判断选项有:
test -z string 判断string是否为空
test -n string 判断string是否非空
test str1=str2 判断str1是否等于str2
test str1!=str2 判断str1是否不等于str2
多重条件判断:
-a 两个条件同时成立 例如test -r file1 -a -x file1,判断file1是否同时可读可执行
-o 任何一个条件成立 例如test -r file1 -o -x file1,判断file1具有可读或者可执行权限
! 取反,例如test !-x file1,file1不具有可执行权限时,返回true
(2)利用[ ]进行条件判断
除了使用test命令进行条件判断之外,还可以使用符号[]来判断。
例如
[ -z "$HOME" ] ; echo $?需要注意的是:
在中括号[]内的每个组件都要用空格分隔;
在中括号内的变量和常量最好都以双引号引起来。
例如根据用户输入字符y或n分别显示yes或no
#!/bin/bash read -p "please input you chaoice(y/n)" ch [ "$ch" == "Y" -o "$ch" == "y" ] && echo "Yes!" && exit 0 [" $ch " == "N" -o "$ch" == "n" ] && echo "No!" && exit 0 echo "I don't know what you input~"
- Linux学习之shell编程一
- Linux之Shell编程学习
- Linux之Shell学习(一)Shell简介
- Linux shell编程学习(一)
- Linux下Shell编程之必背必记(一)
- Linux Shell编程学习笔记一:shell简介
- Linux shell编程学习笔记(一) shell初探
- linux shell 编程之if(收藏学习)
- LINUX学习之路----shell编程
- Linux学习之shell编程二
- Linux学习之shell编程三
- Linux学习之shell编程应用
- linux shell 编程之if(收藏学习)
- linux shell 编程之语法学习
- Linux学习笔记之SHELL编程
- 《Linux Shell编程学习笔记之三》
- Linux Shell编程一
- shell编程学习一
- python多返回值
- 分享两个关于数据库连接问题的解决方案
- 焦点去哪儿了?ANDROID焦点控制问题
- atoi()函数
- 十分钟学会Git管理自己的代码
- Linux学习之shell编程一
- 关于Sql Server 2005在Jsp中的使用
- nyoj-20-吝啬的国度
- 挂载磁阵
- APACHE2.4.7+PHP5.5.9+MySQL5.5(MARIADB5.5.34)+phpMyAdmin4.1.9的WINDOWS系统下整合
- some good resources
- 一个VB6.0学习网站
- L1缓存命中
- 关于Ubuntu 13.10_64位系统库的问题---》解决steam以及dota2的安装