xgqfrms™, xgqfrms® : xgqfrms's offical website of cnblogs! xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

Linux shell script switch...case All In One

Linux shell script switch...case All In One

case...in...esac

case ... esac 为多选择语句,与其他语言中的 switch ... case 语句类似,是一种多分支选择结构;
每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 case ... esac 语句,
esac(就是 case 反过来)作为结束标记。

可以用 case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。

case 工作方式如上所示,取值后面必须为单词 in,每一模式必须以右括号结束。
取值可以为变量常数,匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。

取值将检测匹配的每一个模式。
一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。
如果一匹配模式,使用星号 * 捕获该值,再执行后面的命令。

case ... esac 语法格式

case "值/变量" in
  模式1)
    command1
    command2
    ...
    commandN
    ;;
  模式2)
    command1
    command2
    ...
    commandN
    ;;
  # 模式 ...)
  *)
    command1
    command2
    ...
    commandN
    ;;
esac

exit 0;

demos

image

# export N=1
export N=3

# ✅
case "$N" in
  1)
    echo 'case 1 数字';;
  2)
    echo 'case 2 数字';;
  *)
    echo 'default case 数字 *'
    echo 'error exit ❌'
    exit 1
  ;;
esac
#!/usr/bin/env bash

# export USER="pi"
# echo "user = $USER"

# 参数 1
# echo "\$1 = $1"

# export N=1
# case 1 数字
# suceess exit ✅

export N=3
# default case 数字 *
# error exit ❌

# ✅
case "$N" in
  1)
    echo 'case 1 数字';;
  2)
    echo 'case 2 数字';;
  *)
    echo 'default case 数字 *'
    echo 'error exit ❌'
    exit 1
  ;;
esac

echo 'suceess exit ✅'
exit 0



<<EOF


# ✅
case "$N" in
  1)
    echo 'case 1'
  ;;
  2)
    echo 'case 2'
  ;;
  *)
    echo 'default case 数字 *'
  ;;
esac

EOF


shell script REPL

#!/bin/bash

export USER="pi"
echo "user = $USER"
# echo "\$1 = $1"

# export N=1
export N=3

case "$N" in
  1)
    echo 'case 1'
    ;;
  2)
    echo 'case 2'
    ;;
  *)
    echo 'default case 数字 *'
    ;;
esac

https://www.runoob.com/try/runcode.php?filename=helloworld&type=bash

(🐞 反爬虫测试!打击盗版⚠️)如果你看到这个信息, 说明这是一篇剽窃的文章,请访问 https://www.cnblogs.com/xgqfrms/ 查看原创文章!

shell script shebang env

hash bang env

#!\usr\bin\env bash

#!\usr\bin\env bash
# ❌

image

#!/usr/bin/env

#!/usr/bin/env bash
✅

export N=1
# case 1 数字
# suceess exit ✅

# ✅
case "$N" in
  1)
    echo 'case 1 数字';;
  2)
    echo 'case 2 数字';;
  *)
    echo 'default case 数字 *'
    echo 'error exit ❌'
    exit 1
  ;;
esac

echo 'suceess exit ✅'
exit 0

https://www.cyberciti.biz/tips/finding-bash-perl-python-portably-using-env.html

https://unix.stackexchange.com/questions/29608/why-is-it-better-to-use-usr-bin-env-name-instead-of-path-to-name-as-my

https://www.baeldung.com/linux/bash-shebang-lines

https://stackoverflow.com/questions/43793040/how-does-usr-bin-env-work-in-a-linux-shebang-line

refs

https://www.cnblogs.com/xgqfrms/p/16476153.html#5173280

https://www.runoob.com/linux/linux-shell-process-control.html



©xgqfrms 2012-2021

www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!

原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!


posted @ 2023-05-03 15:48  xgqfrms  阅读(81)  评论(1编辑  收藏  举报