当前位置: 首页 > 知识库问答 >
问题:

Bash脚本If语句比较用户输入,未找到命令[重复]

班经亘
2023-03-14

我是一名计算机科学专业的学生,目前正在从事一项Linux作业,该作业分为多个任务。

我正在处理的当前任务要求我提示用户输入他们的姓名和一天中的时间,然后使用if语句评估输入并输出适当的消息。我还必须查找文件并输出适当的消息。如果文件不存在,我已在下面插入了我的尝试。

#!/bin/bash
echo "Enter your name"
read name
echo "What hour is it?"
read hour

echo "$name $hour"

if ["$hour" -gt 23]
then
 echo "That hour is not correct"
fi

if ["$hour" -ge 0 -o "$hour" -le 7]
then
 echo "It's very early $name, you should be asleep"
fi

if ["$hour" -ge 8 -o "$hour" -le 22]
then
 echo "Good day $name"
fi

if ["$hour" -eq 23]
then
 echo "Time for bed $name"
fi

if [-f "fandmf13.txt"]
then
  cat fandmf13.txt
else
  echo "File not found"
fi

执行此代码时,我会收到以下错误消息:

./fandmf4.sh: line 9: [8: command not found
  ./fandmf4.sh: line 14: [8: command not found
  ./fandmf4.sh: line 19: [8: command not found
  ./fandmf4.sh: line 24: [8: command not found
  ./fandmf4.sh: line 29: [-f: command not found
  File not found

如果有人能给我一些指点或提示,告诉我哪里出错了,那就太好了

共有1个答案

赏航
2023-03-14

你应该回顾一下逻辑,但是你可以试试这个:

之间缺少一个空格如果[[,还需要一个空格在[[和变量之间

表达1

如果表达式1和表达式2都为True,则为True。

表达式1 | |表达式2

如果表达式1或表达式2为true,则为true。

#!/bin/bash
echo "Enter your name"
read name
echo "What hour is it?"
read hour

echo "${name}-${hour}"

if [[ "$hour" -gt 23 ]]
then
  echo "That hour is not correct"
fi

if [[ "$hour" -ge 0 || "$hour" -le 7 ]]
then
  echo "It's very early ${name}, you should be asleep"
fi

if [[ "$hour" -ge 8 || "$hour" -le 22 ]]
then
  echo "Good day $name"
fi

if [[ "$hour" -eq 23 ]]
then
    echo "Time for bed $name"
fi

if [[ -f "fandmf13.txt" ]]
then
    cat fandmf13.txt
else
   echo "File not found"
fi
 类似资料:
  • 我试图使用grep在文件中查找单词“pass_max_days”,然后将其保存在一个变量中,并将其与值为90或更小的正则表达式进行比较。 grep输出为:pass_max_days120

  • 本文向大家介绍bash脚本中if语句的使用方法,包括了bash脚本中if语句的使用方法的使用技巧和注意事项,需要的朋友参考一下 除了 "if,else" 形式之外,还有其它形式的 "if" 语句: 只有当 condition 为真时,该语句才执行操作,否则不执行操作,并继续执行 "fi" 之后的任何行。 以上 "elif" 形式将连续测试每个条件,并执行符合第一个 真 条件的操作。如果没有条件为真

  • 问题内容: 因此,我试图制作一个bash脚本,该脚本调用此命令,然后将其输入。它调用此命令,此命令之后需要3-4个输入。我键入命令,它等待我输入名字,一个我输入名字,它等待我输入名字,依此类推。如何使用bash脚本一次将这些参数传递给命令? 问题答案: 几种方法。 分组所有echo命令并将它们通过管道传递给命令: 或使用heredoc:

  • 我有一个项目无法运行。 我已经两周没碰这个项目了。我昨天做的唯一一件事就是添加一个git存储库,就是这样。 当我试图运行时,我得到了这个错误: 我已经在其他帖子上看到了关于这个错误的解决方案,但是没有一个适合我。我已经删除了目录和文件,然后运行。 然而,我仍然得到相同的错误消息。有人知道怎么了吗? 这是我的包裹。json文件:

  • 问题内容: 在Python中使用IF语句时,必须执行以下操作才能使“层叠”正常工作。 检查“等于”时,是否有办法使Python接受多个值?例如, 问题答案: if job in (“mechanic”, “tech”): print “awesome” elif job in (“tool”, “rock”): print “dolt” 括号中的值是一个元组。该运营商检查,看是否右手柄元组内的某处

  • 问题内容: 我有一系列要执行的命令。但是,只要出现“找不到命令”错误,我就需要退出。因此,执行输出后检查不是一种选择 “ $?” 当“未找到命令”并成功时,变量等于零。 问题答案: 如果应该通过脚本完成此操作,则很自然地可以使用条件来表达这种行为: