【问题标题】:Comparing a substring of a string比较字符串的子字符串
【发布时间】:2020-08-23 03:28:57
【问题描述】:

如何在 bash shell 的第一个位置检查字符串中的子字符串 0? 在下面的代码中,它说命令是错误的。

#!/bin/bash
Stdalt=$(date +"%H")
if ["${Stdalt:0:1}" -eq "0"]
then
...
fi

【问题讨论】:

标签: string bash substring


【解决方案1】:

== 比较运算符在双括号中的行为不同

[[ $Stdalt == 0* ]]   # True if $Stdalt starts with Stdalt "0" (wildcard matching).
[[ $Stdalt == "0" ]] # True if $Stdalt is equal to 0* (literal matching).

这里是你要找的:

#!/bin/bash
Stdalt=$(date +"%H")
if [[ $Stdalt == 0* ]]
then
    echo "Yes"
fi

另外,您可以只选择要检查的字符串部分:

if [[ "${Stdalt:0:1}" = "0" ]]
then
.
.
fi

【讨论】:

  • 感谢您的回复!刚刚发现它也适用于 [ "${Stdalt:0:1}" == "0" ] 单括号和双括号的区别在哪里?
  • @X3nion 那么您可以接受答案,如果您指的是回显某些内容时会发生什么,单引号将逐字地回显它们之间的内容,而双引号将评估之间的变量它们并输出变量的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多