首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bash脚本中的跳线

bash脚本中的跳线
EN

Stack Overflow用户
提问于 2022-10-26 15:39:38
回答 2查看 36关注 0票数 -1

后藤,在bash脚本中翻译成什么?

这是我的密码:

代码语言:javascript
复制
#!/bin/bash
read distro </etc/issue
echo $distro
if [[ "$distro" = "Debian GNU/Linux bookworm/sid n l" ]];
then
    goto Debian:
elif [[ "$distro" = "Ubuntu GNU/Linux bookworm/sid n l" ]];
then
    goto Ubuntu:
elif [[ "$distro" = "kali GNU/Linux bookworm/sid n l" ]];
then
    goto Kali:
elif [[ "$distro" = "Arch GNU/Linux bookworm/sid n l" ]];
then
    goto Arch:
else
    echo No suported OS detected some thing may not work
fi

Debian:
echo using Debian
sleep 5
exit

Ubuntu:
echo using Ubuntu
sleep 5
exit

Kali:
echo using kali
sleep 5
exit

Arch:
echo using Arch
sleep 5
exit

这是一段非常简单的代码,我甚至不知道我检查Linux发行版的方式是否有效

我尝试过从windows的批处理到Goto函数,但是它不能在Linux上工作,我将如何从一行跳到行?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-26 15:49:28

我建议使用Switch-Case statement with fall-through

所有“处理程序”都可以在将从开关调用的函数中定义:

代码语言:javascript
复制
#!/bin/bash

handleDebian() {
    echo "Using Debian"
}

handleUbuntu() {
    echo "Using Ubuntu"
}

handleKali() {
    echo "Using Kali"
}

handleArch() {
    echo "Using Arch"
}

handleUnknown() {
   echo "No suported OS detected some thing may not work"
}

read distro </etc/issue
case "${distro}" in
    *Debian*)   handleDebian() ;;
    *Ubuntu*)   handleUbuntu() ;;
    *kali*)     handleKali() ;;
    *Arch*)     handleArch() ;;
    *)          handleUnkown() ;;
esac
票数 0
EN

Stack Overflow用户

发布于 2022-10-26 15:50:05

在这种情况下,我会选择一个更紧凑的case语句,例如:

代码语言:javascript
复制
read distro </etc/issue
echo $distro

case "${distro}" in
    *Debian*)    echo "Debian" ;;
    *Ubuntu*)    echo "Ubuntu" ;;
    *kali*)      echo "kali"   ;;
    *Arch*)      echo "Arch"   ;;
    *)           echo "No suported OS detected some thing may not work";;
esac

sleep 5
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74210540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档