斜线在 shell 脚本 (/bin/sh) 中的“case $1/$2”中有何作用

Jam*_*ham 3 shell scripting slash

在 arch wiki 上找到了这个例子

#!/bin/sh
case $1/$2 in
  pre/*)
    echo "Going to $2..."
    ;;
  post/*)
    echo "Waking up from $2..."
    ;;
esac
Run Code Online (Sandbox Code Playgroud)

并且无法确定它是逻辑运算符还是其他东西。

noh*_*ide 8

这里没有什么特别的。的语法case

case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac
Run Code Online (Sandbox Code Playgroud)

在问题的示例中,word是通过组合$1,/和构建的$2/根本没有什么特别的意思,只是一个字符而已。

PS:实际上用法有点奇怪,因为$2后面的部分会匹配,*所以值$2并不重要。在 Wiki 中描述的上下文中,人们也可以写

#!/bin/sh
case $1 in
  pre)
    echo "Going to $2..."
    ;;
  post)
    echo "Waking up from $2..."
    ;;
esac
Run Code Online (Sandbox Code Playgroud)

但在某些情况下,suspend,hibernatehybrid( 的可能值$2)可能是相关的,因此这里只是一个通用模式。

  • 也许`$1` 是`pre/heat` 而`$2` 是`oven` 在这种情况下你的代码将不匹配,但原始代码会;-) (3认同)