【问题标题】:How to take output from a if condition?如何从 if 条件中获取输出?
【发布时间】:2020-06-21 01:35:45
【问题描述】:

我不知道这种方法是否适用。

#!/bin/bash
file=$1
if [[ -x "$file" ]]
then
if [ $? = 0 ]
then 
echo $file is executable
else
echo $file is not executable
fi
fi

但是,如果我使用非可执行文件运行此脚本,它不会返回任何内容 但是如果我用一个可执行文件运行这个脚本,它会返回“name is executable”

只是想知道位置参数的工作。我是初学者。但我可以 将第一个 if 条件的输出放入 $?

【问题讨论】:

  • 您的第一个 if 已经测试文件是否可执行。嵌套的目的是什么?
  • 只是想了解位置参数的工作原理。我是初学者。但是我可以将第一个 if 条件的输出转换为 $ 吗?
  • @BenjaminM.J :回答您问题的第一部分:位置参数1 存储在shell 变量file 中。由于这是脚本中唯一使用位置参数的地方,所以我不明白你还想知道什么。
  • @BenjaminM.J :如果您使用不可执行的文件运行脚本,[[ -x "$file" ]] 是错误的,并且您没有 else 部分。因此,您不会打印任何内容。

标签: linux bash if-statement centos output


【解决方案1】:

对于此类测试,您不需要内部 if。此代码将完成工作:

#!/bin/bash
file=$1
if [[ -x "$file" ]]
 then
   echo $file is executable
 else
   echo $file is not executable
fi

【讨论】:

  • 只是想了解位置参数的工作原理。我是初学者。但是我可以将第一个 if 条件的输出转换为 $ 吗?
  • @BenjaminM.J 您已经拥有它(以不同的形式)。如果它是真的你执行then 如果它是假的你执行else
  • @RomeoNinov :不清楚你在问什么。当然,任何echo 命令都会清除$?,但我不明白为什么这里会出现问题。如果你真的需要$?要保留,只需在打印文件不可执行后调用false
  • @user1934428,如您所见,我在这里不需要任何东西。我提供答案!
  • 对不起,RomeoNinov,我的评论应该发给 OP。错误地,我在评论中输入了你的名字。但是,当我们这样做时:正如我所建议的那样,您确实在解决方案的 else 分支中添加了 false 是有道理的,这样 OP 就可以愉快地验证 $? 之后仍然是一样的。
猜你喜欢
  • 2019-09-19
  • 1970-01-01
  • 2018-12-18
  • 2021-07-06
  • 2022-01-11
  • 1970-01-01
  • 2021-11-19
  • 2013-11-25
  • 1970-01-01
相关资源
最近更新 更多