gpt4 book ai didi

bash - 修复小型 Bash 程序中的 POSIX sh 警告

转载 作者:行者123 更新时间:2023-12-05 09:11:53 25 4
gpt4 key购买 nike

我在 Bash 中编写了以下代码:

#!/bin/sh

host=$1
regex="^(((git|ssh|http(s)?)|(git@[\w\.]+))(:(\/\/)?)([A-Za-z0-9.@:_/-]+)\.com)(.*)"
if [[ "$host" =~ $regex ]]; then
d=${BASH_REMATCH[1]}
if [[ "$d" = *github* ]]; then
return
fi
fi
die "Current repository is not stored in Github."

我想学习如何编写更好的 Bash 代码,所以我使用了 shellcheck.net。

Line 5:
if [[ "$host" =~ $regex ]]; then
^-- SC2039: In POSIX sh, [[ ]] is undefined.

Line 6:
d=${BASH_REMATCH[1]}
^-- SC2039: In POSIX sh, array references are undefined.

Line 7:
if [[ "$d" = *github* ]]; then
^-- SC2039: In POSIX sh, [[ ]] is undefined.

我正在尝试了解如何修复这些警告。我知道为了修复 [[ ]] 我需要将其切换到 [ ] 但随后由于 glob 出现错误。另外,我应该如何替换 =~ 运算符?

最佳答案

当您编写 #!/bin/sh 时,您不应该使用像 [[ 这样的特定于 bash 的功能。但是您不需要将 [[ 更改为 [ 或类似的东西;只需将 shebang 行更改为 #!/bin/bash。然后您可以使用所有您喜欢的 bash 功能。

关于bash - 修复小型 Bash 程序中的 POSIX sh 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59553587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com