1 shell 的$! ,$?, $$,$@
- $n $1 the first parameter,$2 the second...
- $# The number of command-line parameters.
- $0 The name of current program.
- $? Last command or function's return value.
- $$ The program's PID.
- $! Last program's PID.
- $@ Save all the parameters.
almost any shell book will talk about them,from which you can get their detail usages.
2 Linux SHELL if 命令参数说明
- –b 当file存在并且是块文件时返回真
- -c 当file存在并且是字符文件时返回真
- -d 当pathname存在并且是一个目录时返回真
- -e 当pathname指定的文件或目录存在时返回真
- -f 当file存在并且是正规文件时返回真
- -g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真
- -h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效
- -k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真
- -p 当file存在并且是命令管道时返回为真
- -r 当由pathname指定的文件或目录存在并且可读时返回为真
- -s 当file存在文件大小大于0时返回真
- -u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真
- -w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。
- -o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。
UNIX Shell 里面比较字符写法:
- -eq 等于
- -ne 不等于
- -gt 大于
- -lt 小于
- -le 小于等于
- -ge 大于等于
- -z 空串
- = 两个字符相等
- != 两个字符不等
- -n 非空串
总结:
文档比较运算符
-e filename 假如 filename存在,则为真 [ -e /var/log/syslog ]
-d filename 假如 filename为目录,则为真 [ -d /tmp/mydir ]
-f filename 假如 filename为常规文档,则为真 [ -f /usr/bin/grep ]
-L filename 假如 filename为符号链接,则为真 [ -L /usr/bin/grep ]
-r filename 假如 filename可读,则为真 [ -r /var/log/syslog ]
-w filename 假如 filename可写,则为真 [ -w /var/mytmp.txt ]
-x filename 假如 filename可执行,则为真 [ -L /usr/bin/grep ]
filename1-nt filename2 假如 filename1比 filename2新,则为真 [ /tmp/install/etc/services -nt /etc/services ]
filename1-ot filename2 假如 filename1比 filename2旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]
字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)
-z string 假如 string长度为零,则为真 [ -z "$myvar" ]
-n string 假如 string长度非零,则为真 [ -n "$myvar" ]
string1= string2 假如 string1和 string2相同,则为真 [ "$myvar" = "one two three" ]
string1!= string2 假如 string1和 string2不同,则为真 [ "$myvar" != "one two three" ]
算术比较运算符
num1-eq num2 等于 [ 3 -eq $mynum ]
num1-ne num2 不等于 [ 3 -ne $mynum ]
num1-lt num2 小于 [ 3 -lt $mynum ]
num1-le num2 小于或等于 [ 3 -le $mynum ]
num1-gt num2 大于 [ 3 -gt $mynum ]
num1-ge num2 大于或等于 [ 3 -ge $mynum ]
本文摘自网络
+++++++++++++++++++++++++++++++++++++++++++
shell判断文件,目录是否存在或者具有权限
myPath="/var/log/httpd/"
myFile="/var /log/httpd/access.log"
#这里的-x 参数判断$myPath是否存在并且是否具有可执行权限
if [ ! -x "$myPath" ]; then
mkdir "$myPath"
fi
#这里的-d 参数判断$myPath是否存在
if [ ! -d "$myPath" ]; then
mkdir "$myPath"
fi
#这里的-f参数判断$myFile是否存在
if [ ! -f "$myFile" ]; then
touch "$myFile"
fi
#其他参数还有-n,-n是判断一个变量是否是否有值
if [ ! -n "$myVar" ]; then
echo "$myVar is empty"
exit 0
fi
#两个变量判断是否相等
if [ "$var1" = "$var2" ]; then
echo '$var1 eq $var2'
else
echo '$var1 not eq $var2'
fi
========================================
shell 判断语句
流程控制 "if" 表达式 如果条件为真则执行then后面的部分: if ....; then
....
elif ....; then
....
else
....
fi
大多数情况下,可以使用测试命令来对条件进行测试。比如可以比较字符串、判断文件是否存在及是否可读等等… 通常用" [ ] "来表示条件测试。注意这里的空格很重要。要确保方括号的空格。
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等 -r file 用户可读为真
-w file 用户可写为真
-x file 用户可执行为真
-f file 文件为正规文件为真
-d file 文件为目录为真
-c file 文件为字符特殊文件为真
-b file 文件为块特殊文件为真
-s file 文件大小非0时为真
-t file 当文件描述符(默认为1)指定的设备为终端时为真
#########################################################
对于不含变量的任务简单shell脚本一般能胜任。但在执行一些决策任务时,就需要包含if/then的条件判断了。shell脚本编程支持此类运算,包括比较运算、判断文件是否存在等。基本的if条件命令选项有: -eq —比较两个参数是否相等(例如,if [ 2 –eq 5 ])
-ne —比较两个参数是否不相等
-lt —参数1是否小于参数2
-le —参数1是否小于等于参数2
-gt —参数1是否大于参数2
-ge —参数1是否大于等于参数2
-f — 检查某文件是否存在(例如,if [ -f "filename" ])
-d — 检查目录是否存在
几 乎所有的判断都可以用这些比较运算符实现。脚本中常用-f命令选项在执行某一文件之前检查它是否存在。 ################################################################## 判断文件是否存在
today=`date -d yesterday +%y%m%d`
file="apache_$today.tar.gz"
cd /home/chenshuo/shell
if [ -f "$file" ];then
echo "OK"
else
echo "error $file" >error.log
mail -s "fail backup from test" test@test.com <error.log
fi
相关推荐
shell 判断输入的ip是否和本机的ip同网段 包含两种实现方法
除了字符串和数字的比较,Shell还提供了对文件类型的判断功能: - **-b(块设备文件)** - **-c(字符设备文件)** - **-d(目录)** - **-e(文件或目录存在)** - **-f(普通文件)** - **-g(设置了SGID位)** - ...
shell判断cpu架构
详细介绍了shell编程中的判断 数字 字符 文件名 等是否相等,匹配。附有详细的演示截图。在CentOs 6中演示。
### Shell判断一个进程是否存在 在日常的系统管理和自动化运维任务中,经常需要判断某个特定的进程是否正在运行。这样的需求通常出现在Shell脚本中,通过判断进程的状态来执行不同的操作或者逻辑。例如,在某些场景...
读取文件SHELL并判断文件生成时间,考虑到文件可能没有生成完,低于5分钟文件不拷贝。并且可以循环处理,分别判断生成的时间
这是linux shell判断平闰年,输入正确格式日期就可以判断这是一个平年还是闰年,输入正确格式日期就可以判断在该日期下是星期几,而且输入两个日期还可以判断这两个日期之间间隔了几天,可以正确使用,你们也可以...
Shell提供了多种方式进行整数的比较,包括使用`[`和`[[`这两种不同的语法结构。 ##### 基本语法 - `-eq`:判断两个整数是否相等。 - `-ne`:判断两个整数是否不相等。 - `-gt`:判断左边的整数是否大于右边的整数...
shell自动化脚本,自动判断文件夹(目录)是否存在,如不存在自动创建,可执行,下载可测试
不同的Shell有不同的语法和特性,其中Bash(Bourne-Again SHell)和tcsh(C Shell的扩展版)是最常见的两种。本文将详细探讨这两种Shell中的表达式比较,包括字符串比较、数字比较、文件操作以及逻辑操作符。 首先...
**文件`shell判断输入的参数是否正确.txt`相关:** 在编写接受用户输入的Shell脚本时,我们需要验证参数是否满足特定条件。例如,可以使用`if`语句检查参数数量或类型: ```bash if [ $# -ne 1 ]; then echo "Usage...
本章节将从Shell脚本的基础出发,深入探讨循环和判断语句的具体应用,包括如何监控程序、管理进程、监控磁盘空间,以及如何操作数据文件等关键知识点。 #### 监控程序与进程管理 ##### 查看进程:ps与top命令详解 ...
- 比较两个文本文件中的MD5值,判断文件是否一致。 - 输出不一致的文件列表,包括只存在于一台服务器的文件以及内容发生变化的文件。 #### 脚本详解 1. **定义变量**: - `local_dir`:本地服务器的目录路径。 -...
例如,`if`语句用于条件判断,`for`和`while`循环用于迭代操作,`function`关键字用于定义自定义函数。Shell还支持变量和参数,使得脚本具有更高的灵活性。 在压缩包子文件的文件名称列表中,虽然具体文件内容未知...
shell数组循环 测试shell数组,循环的例子: arr=(a b c) echo 所有的内容如下:${arr[@]} echo 数组的长度:${#arr[*]} ... 您可能感兴趣的文章:Shell获取字符串长度的多种方法总结用Shell判断字符串包含
shell运算符介绍和例子 shell运算符是指在shell脚本中使用的运算符,包括算术运算符...shell运算符是shell脚本中的一种重要工具,可以帮助开发者实现各种计算、比较和逻辑判断等操作,提高shell脚本的灵活性和强大性。
06Shell 系统变量和自定义变量案例.mp4 07Shell $n案例.mp4 08Shell $#案例.mp4 09Shell $※$@案例.mp4 10Shell $?案例.mp4 11Shell 运算符.mp4 12Shell 条件判断案例.mp4 13Shell 回顾.mp4 14Shell if案例.mp4 15...
这个"shell脚本远程启动其他服务器的tomcat传输文件自动登录判断启动停止"的方案,就是一种典型的自动化运维实践,它结合了多个核心工具和技术,包括shell脚本、expect、ssh以及scp,用于实现远程服务器管理与文件...
"Shell编程和Unix命令.pdf" 本资源主要讲解 Unix 命令和 Shell 编程相关的知识点。下面是从文件的标题、描述、标签和部分内容中提取的知识点: 文件安全与权限 文件安全是 Unix 操作系统安全的一个重要方面。为了...
在 Linux Shell 编程中,if 语句可以使用文件比较运算符来判断文件或目录的状态。这些运算符包括: * -b:判断文件是否存在并且是块文件 * -c:判断文件是否存在并且是字符文件 * -d:判断 pathname 是否存在并且是...