Shell Step by Step (3) —— Stdin & if

4.输入输出

#! /bin/bash
# Read users input and then get his name
read -p "Please input your first name: " firstName
read -p "Please input your last name: " lastName
echo -e "Your full name is:   $firstName  $lastName"

read使用方法:

read [-ers] [-a 数组] [-d 分隔符] [-i 缓冲区文字]
     [-n 读取字符数] [-N 读取字符数] [-p 提示符]
     [-t 超时] [-u 文件描写叙述符] [名称 ...]

5.条件判别式

-e          是否存在
-nt         (newer than) file1 是否比 file2 新
-ot         (older than) file1 是否比 file2 旧
-ne         表示 不等于
-eq         等于,如:if ["$a" -eq "$b" ]
-ne         不等于,如:if ["$a" -ne "$b" ]
-gt         大于,如:if ["$a" -gt "$b" ]
-ge         大于等于,如:if ["$a" -ge "$b" ]
-lt         小于,如:if ["$a" -lt "$b" ]
-le         小于等于,如:if ["$a" -le "$b" ]
<           小于(须要双括号),如:(("$a" < "$b"))
<=          小于等于(须要双括号),如:(("$a" <= "$b"))
>           大于(须要双括号),如:(("$a" > "$b"))
>=          大于等于(须要双括号),如:(("$a" >= "$b"))
-z          (zero)  是否为零
[ -a FILE ]  假设 FILE 存在则为真。
[ -b FILE ]  假设 FILE 存在且是一个块特殊文件则为真。
[ -c FILE ]  假设 FILE 存在且是一个字特殊文件则为真。
[ -d FILE ]  假设 FILE 存在且是一个文件夹则为真。
[ -e FILE ]  假设 FILE 存在则为真。

[ -f FILE ]  假设 FILE 存在且是一个普通文件则为真。

[ -g FILE ]  假设 FILE 存在且已经设置了SGID则为真。
[ -h FILE ]  假设 FILE 存在且是一个符号连接则为真。

[ -k FILE ]  假设 FILE 存在且已经设置了粘制位则为真。
[ -p FILE ]  假设 FILE 存在且是一个名字管道(F假设O)则为真。

[ -r FILE ]  假设 FILE 存在且是可读的则为真。
[ -s FILE ]  假设 FILE 存在且大小不为0则为真。
[ -t FD ]    假设文件描写叙述符 FD 打开且指向一个终端则为真。
[ -u FILE ]  假设 FILE 存在且设置了SUID (set user ID)则为真。
[ -w FILE ]  假设 FILE 假设 FILE 存在且是可写的则为真。

[ -x FILE ]  假设 FILE 存在且是可运行的则为真。

[ -O FILE ]  假设 FILE 存在且属有效用户ID则为真。
[ -G FILE ]  假设 FILE 存在且属有效用户组则为真。
[ -L FILE ]  假设 FILE 存在且是一个符号连接则为真。

[ -N FILE ]  假设 FILE 存在 and has been mod假设ied since it was last read则为真。
[ -S FILE ]  假设 FILE 存在且是一个套接字则为真。

[ FILE1 -nt FILE2 ]  假设 FILE1 has been changed more
                     recently than FILE2, or 假设 FILE1
                     exists and FILE2 does not则为真。
[ FILE1 -ot FILE2 ]  假设 FILE1 比 FILE2 要老, 或者 FILE2 存在
                     且 FILE1 不存在则为真。

[ FILE1 -ef FILE2 ]  假设 FILE1 和 FILE2 指向同样的设备和节点号
                     则为真。
[ -o OPTIONNAME ]    假设 shell选项 “OPTIONNAME” 开启则为真。
[ -z STRING ]       “STRING” 的长度为零则为真。
[ -n STRING ] or [ STRING ]  “STRING” 的长度为非零 non-zero则为真。
[ STRING1 == STRING2 ]  假设2个字符串同样。 “=” may be used
                        instead of “==” for strict POSIX
                        compliance则为真。
[ STRING1 != STRING2 ]  假设字符串不相等则为真。

[ STRING1 < STRING2 ]   假设 “STRING1” sorts before
                        “STRING2” lexicographically in the
                        current locale则为真。

[ STRING1 > STRING2 ]  假设 “STRING1” sorts after “STRING2”
                       lexicographically in the current
                       locale则为真。
[ ARG1 OP ARG2 ]    “OP” is one of -eq, -ne, -lt, -le,
                    -gt or -ge. These arithmetic binary
                    operators return true if “ARG1” is
                    equal to, not equal to, less than, less
                    than or equal to, greater than, or
                    greater than or equal to “ARG2”,
                    respectively. “ARG1” and “ARG2” are
                    integers. 

e.g:

if [ "$UID" -ne "$ROOT_UID" ]  then ……

热门推荐


版权声明:本文博主原创文章,博客,未经同意不得转载|Copyright ©2011-2015, Kallen Ding, All Rights Reserved.

时间: 2024-10-05 05:01:46

Shell Step by Step (3) —— Stdin &amp; if的相关文章

精通initramfs构建step by step

http://hi.baidu.com/jonathan2004/blog/item/db7bf38aad11759ea4c2721d.html 精通initramfs构建step by step (1)--hello world 2009-12-08 19:19 一.initramfs是什么 在2.6版本的linux内核中,都包含一个压缩过的cpio格式的打包文件.当内核启动时,会从这个打包文件中导出文件到内核的rootfs文件系统, 然后内核检查rootfs中是否包含有init文件,如果有则

WPF Step By Step 系列-Prism框架在项目中使用

WPF Step By Step 系列-Prism框架在项目中使用 回顾 上一篇,我们介绍了关于控件模板的用法,本节我们将继续说明WPF更加实用的内容,在大型的项目中如何使用Prism框架,并给予Prism框架来构建基础的应用框架,并且如何来设计项目的架构和模块,下面我们就来一步步开始吧. 本文大纲 1.Prism框架下载和说明 2.Prism项目预览及简单介绍. 3.Prism框架如何在项目中使用. Prism框架下载和说明 Prism框架是针对WPF和Silverlight的MVVM框架,这

HDU 2815 扩展baby step giant step 算法

题目大意就是求 a^x = b(mod c) 中的x 用一般的baby step giant step 算法会超时 这里参考的是http://hi.baidu.com/aekdycoin/item/236937318413c680c2cf29d4 map平衡树查找值 1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <cmath> 5 #include <

POJ 2417 Discrete Logging ( Baby step giant step )

Discrete Logging Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 3696   Accepted: 1727 Description Given a prime P, 2 <= P < 231, an integer B, 2 <= B < P, and an integer N, 1 <= N < P, compute the discrete logarithm of N, b

数论之高次同余方程(Baby Step Giant Step + 拓展BSGS)

什么叫高次同余方程?说白了就是解决这样一个问题: A^x=B(mod C),求最小的x值. baby step giant step算法 题目条件:C是素数(事实上,A与C互质就可以.为什么?在BSGS算法中是要求a^m在%c条件下的逆元的,如果a.c不互质根本就没有逆元.) 如果x有解,那么0<=x<C,为什么? 我们可以回忆一下欧拉定理: 对于c是素数的情况,φ(c)=c-1 那么既然我们知道a^0=1,a^φ(c)=1(在%c的条件下).那么0~φ(c)必定是一个循环节(不一定是最小的)

Git Step by Step – (8) Git的merge和rebase

前面一篇文章中提到了"git pull"等价于"git fetch"加上"git merge",然后还提到了pull命令支持rebase模式,这篇文章就介绍一下merge和rebase之间有什么差别. 由于我们主要是想看看merge跟rebase之间的区别,这里就是用本地仓库的分支进行演示了. merge 其实在介绍分支的那篇文章中已经介绍过了一些分支merge的内容,这里就进行一些补充和总结. 下面我们基于本地一个仓库开始介绍,当前仓库的分支情

C# 2012 step by step 学习笔记8 CHAPTER 9 Creating Value types with enumerations and Structures

C# 2012 step by step 学习笔记8 CHAPTER 9 Creating Value types with enumerations and Structures things about 1. Declare an enumeration type. 2. Create and use an enumeration type. 3. Declare a structure type. 4. Create and use a structure type. 5. Explain

Linux Booting Process: A step by step tutorial for understanding Linux boot sequence

One of the most remarkable achievement in the history of mankind is computers. Another amazing fact about this remarkable achievement called computers is that its a collection of different electronic components, and they work together in coordination

C++开发WPF,Step by Step

示例代码 使用C++来开发WPF,主要是如何在MFC(Win32)的窗口中Host WPF的Page.下面我就做个详细的介绍. 一.创建工程, 由于MFC的Wizard会生成很多用不到的代码,所以我准备从一个空的工程开始创建一个MFC的工程. a)         打开VS2005,菜单File->New->Projects-, 左面选择Visual C++->Win32,右面选择Win32 Console Application,给工程起个名字CPlusPlus_WPF, Ok进入下一