shell脚本中: if [ -f /FileA -a -O /FileB ]; then 语句中判断条件怎么理解,逻辑关系是什么?

作者&投稿:线曲 (若有异议请与网页底部的电邮联系)
shell脚本中的if中多条件语句如何写。~

可以使用 if-elif-else 语法来写多条件语句。
1、首先要理解if-else的基本用法,if条件+then操作+else操作+fi闭合,书写方法如下:

2、if -elif-else 语法的具体格式--if单条件多分支,书写方法如下:

3、实例 - if单条件多分支,这个实例的输出结果是:a 小于 b。

4、实例 - if多条件多分支,这个实例输出结果是:a 等于 b,或 a小于10。

扩展资料
1、shell语法注意事项
shell的if语法和C语言等高级语言非常相似,唯一需要注意的地方就是shell的if语句对空格方面的要求比较严格,如果在需要空格的地方没有打上空格,就会报错。
如if [ 1 == 1 ];then echo "abc";fi中如果在少写了if后面的空格就报错:

2、 shell语法中[[ ]]和[ ]的主要区别
(1) [ ] 实际上是bash 中 test 命令的简写。即所有的 [ expr ] 等于 test expr。对 test 命令来说, 用 -eq 要进行数字比较,而你此时传入字符串,就报错了。
(2) [[ ]] 是内置在shell中的一个命令,它比test强大的多。支持字符串的模式匹配(使用=~操作符时甚至支持shell的正则表达式)。逻辑组合可以不使用test的-a,-o而使用&& ||。

指的是文件大小非0时为真。
shell中怎么判断输入的是否是数字:
第一种:sed格式
首先:我们先(在命令行直接输出模拟一下,如果都正确再在shell脚本中进行书写。)直接echo输出一下
echo "111asd"
第一步:思想
然后我们就要想一下我们要说用sed判断,但是sed的最主要的功能是什么?替换!!!当然是替换,既然是替换那么我们能不能直接把echo输出的数字直接替换掉,然后看这个输出还剩下什么呢?如果我们剩下的空,那么我就基本可以确定我echo输出的就是空,如果我sed替换之后不是空,那么我是不是就是可以认为我echo输出的不是数字或不全是数字呢?
第二步:命令行测试:
[root@localhost shell]# echo "111asd" | sed 's#[0-9]##g' | cat -A
asd$
[root@localhost shell]# echo "111" | sed 's#[0-9]##g' | cat -A
$
第三步:进行shell测试
经过第二步我们很明显就能看出来这个想法是能够实现的。所以在shell中配合-z(zero)-n(no zero)是完全可以实现的,所以这个时候我们就可以进行脚本的编写测试了。
#!/bin/bash
##############################################################
# File Name: test.sh
# Version: V1.0
# Author: ls
# Created Time : 2017-02-24 06:25:13
# Description:
##############################################################
#交互式外部读取
read -p "pleace input: " a1
#if进行数字判断
if [ -z "$(echo $a1 | sed 's#[0-9]##g')" ]
then
#如果是数字输出yes给$?一个1的返回值并退出。
echo "yes"
exit 1
else
#如果不是数字输出no给$?一个1的返回值并退出。
echo "no"
[root@localhost shell]# sh test.sh
pleace input: 1
yes
[root@localhost shell]# sh test.sh
pleace input: q1
no

你可以在man test,看到
EXPRESSION1 -a EXPRESSION2
both EXPRESSION1 and EXPRESSION2 are true
EXPRESSION1 -o EXPRESSION2
either EXPRESSION1 or EXPRESSION2 is true
,-a就是两者都为真,-o就是其中一个为真

-f FILE
FILE exists and is a regular file
-O FILE
FILE exists and is owned by the effective user ID

shell的意思是壳,在计算机领域的意思是人机界面。人在壳外,计算机在壳内。

PC的DOS系统就是人机界面,用键盘打入的命令或让计算机执行的命令组合bat文件,都通过界面的解释,告诉计算机要执行的任务。

unix,linux等系统也有类似DOS的东西,有sh,csh等人机界面,它们的bat就是 sh 脚本,csh 脚本 (script).

人机界面的核心,是一个解释程序。

3

-a是and,左右条件两者都成立
-o是or,左右条件任意一条成立


云阳县13072094075: bash shell中if [ - f $2]和echo - e是什么意思看到很多判断语句都可以带参数的,有没有相关参数的大全或者解释? -
琦项舒邦:[答案] if [ -f $2 ] do command done if后接的是测试语句,[ ] 中相当于test命令.-f $2 一般的意思是检测第二个位置参数是否存在 echo -e 后一般会接参数, -e 若参数出现以下字符,则特别加以处理,而不会将它当成一般 文字输出: \a 发出警告声; \b 删除前...

云阳县13072094075: 创建一个script,Linux shell脚本 -
琦项舒邦: 和C语言类似,在Shell中用if、then、elif、else、fi这几条命令实现分支控制.这种流程控制语句本质上也是由若干条Shell命令组成的,例如先前讲过的 if [ -f ~/.bashrc ]; then~/.bashrc fi 其实是三条命令,if [ -f ~/.bashrc ]是第一条,then . ~/.bashrc...

云阳县13072094075: shell脚本中: if [- f /FileA - a - O /FileB ]; then 语句中判断条件怎么理解,逻辑关系是什么? -
琦项舒邦: -a是and,左右条件两者都成立-o是or,左右条件任意一条成立

云阳县13072094075: 如何在shell脚本中判断文件或者文件夹是否存在 -
琦项舒邦: 使用-e 判断,例如 if [ -e $FILE ] thenecho $FILE 作为文件或文件夹是存在的 fi

云阳县13072094075: shell判断文件,目录是否存在或者具有权限centos -
琦项舒邦: 因shell还不是很熟练,所以做此笔记,方便查看. #!/bin/sh myPath="/var/log/httpd/" myFile="/var /log/httpd/access.log" #这里的-x 参数判断$myPath是否存在并且是否具有可执行权限if [ ! -x "$myPath"]; then mkdir "$myPath" fi #这里的-...

云阳县13072094075: shell脚本逻辑测试,逻辑否怎么用 -
琦项舒邦: if [ -f file ];then echo 文件存在 fi if [ ! -f file ];then echo 文件不存在 fi

云阳县13072094075: shell 脚本 猜数字并记录每次猜对的轮数 -
琦项舒邦: 自己写的脚本调用的日志打印函数,供参考 在脚本开头的工作 定义日志文件LOGFILE 定义日志文件_LOGSEQ 定义日志函数 log() {#检查是否存在日志文件,如果存在,则检查文件是否过大(20M)#过大时,切换文件,并将目前的日志保存...

云阳县13072094075: 读下列shell脚本中的代码,并对代码进行解释 -
琦项舒邦: #!/bin/bash ##告诉内核用哪一个shell解释器去解释你的脚本,这里是bash dir=$1;shift ##把脚本的第一个参数赋值给 dir变量,shift命令是参数右移一位,即删除第一个参数 if [ -d $dir ] *##if 判断变量dir是否为目录 then cd $dir ##如果是目录,则cd...

云阳县13072094075: 用shell脚本编写区别两个文件夹(包括子文件夹)内文件的不同 -
琦项舒邦: 下面是我的一种方法,希望有更好的方法进行改进:#!/bin/bashbasedir="./"workdir="/tmp"#这是定义两个目录,按照你的说法,这两个目录下文件名应该都是相同的dir1="test1"dir2="test2"#这是用来保存查找dir1目录的所有文件路径...

云阳县13072094075: Linux 简单Shell脚本编程 -
琦项舒邦: #!/bin/bashecho "Please enter the file name you want:"read filenameif [ -f $filename ]; then file $filename;fi

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网