【问题标题】:Bash "if" statement not working properlyBash“if”语句无法正常工作
【发布时间】:2017-01-10 16:08:18
【问题描述】:

我正在尝试在 shell 中运行此命令,但输出明显错误。

day=$(date -r myfile.c | cut -d ' ' -f 1); if(($day == "Fri")); then echo $day; fi;

输出是Sat。这怎么可能? 我已经尝试过不同的方式:

if(($day == "Fri"))
if(("$day" == "Fri"))
if(("$day" == 'Fri'))

【问题讨论】:

  • 在 google 上搜索正确的 bash if 语法,或运行 man test
  • 是的; if [ $day = "Fri" ] then ...
  • 使用方括号会出现语法错误
  • 空格是必需的。 [ 是一个实际的命令; $day="Fri"] 是参数。

标签: bash shell


【解决方案1】:

您用来进行字符串比较的语法不正确。

可移植语法是if [ "$day" = Fri ]

特定于 bash 的语法是 if [[ $day = Fri ]] - 使用 [[,则不需要引号。

注意关键字/命令之间的空格很重要,所以不能写if[,因为shell不知道if[指的是什么。

【讨论】:

  • 另外,(( )) 用于算术,而不是文本,比较。
猜你喜欢
  • 2015-09-27
  • 2019-07-23
  • 2016-04-14
  • 1970-01-01
  • 2016-10-06
  • 1970-01-01
  • 1970-01-01
  • 2016-04-05
  • 1970-01-01
相关资源
最近更新 更多