Macos 将字符串变量与列表进行比较,并输出到MacBashShell中的变量

Macos 将字符串变量与列表进行比较,并输出到MacBashShell中的变量,macos,bash,shell,terminal,Macos,Bash,Shell,Terminal,好的,我是一个非常新的shell脚本,只有基本的知识。我试图寻找我问题的答案,但只能找到我想做的事情的点点滴滴 我想从mac(任何操作系统,但目前我们使用10.7.x、10.8.x、10.9.x)上获取型号,将其与(型号)列表进行比较,然后输出以更新主机名 用户名(我们将使用jsmith),它被定义为$username 最终结果如下(取决于机器类型): jsmith-MBP13 或 jsmith-MBP15 代码中的第一行返回如下结果: MacBookPro8,1 代码如下: MODELID=$

好的,我是一个非常新的shell脚本,只有基本的知识。我试图寻找我问题的答案,但只能找到我想做的事情的点点滴滴

我想从mac(任何操作系统,但目前我们使用10.7.x、10.8.x、10.9.x)上获取型号,将其与(型号)列表进行比较,然后输出以更新主机名

用户名(我们将使用jsmith),它被定义为$username

最终结果如下(取决于机器类型):

jsmith-MBP13

jsmith-MBP15

代码中的第一行返回如下结果:

MacBookPro8,1

代码如下:

MODELID=$(system_profiler SPHardwareDataType | grep "Model Identifier" | cut -d: -f2 | tr -d " ")

MBP132010="MacBookPro8,1"
MBP152010="MacBookPro8,2"
MBP172010="MacBookPro8,3"
MBP132011E="MacBookPro9,1"
MBP152011E="MacBookPro9,2"
MBP172011E="MacBookPro9,3"
MBP132011L="MacBookPro10,1"
MBP152011L="MacBookPro10,2"
MBP172011L="MacBookPro10,3"

for i in $MBP132010 $MBP132011E $MBP132011L; do
[ "$MODELID" = "$i" ]
MBP13=$"MBP13"
done

for i in $MBP152010 $MBP152011E $MBP152011L; do
[ "$MODELID" = "$i" ]
MBP15=$"MBP15"
done

for i in $MBP172010 $MBP172011E $MBP172011L; do
[ "$MODELID" = "$i" ]
MBP17=$"MBP17"
done

sudo scutil --set HostName $USERNAME"-"
sudo scutil --set ComputerName $USERNAME"-"
sudo scutil --set LocalHostName $USERNAME"-"

我看到如果MODELID的最后一个字符是1,那么您需要“MBP13”,等等,所以


工作得很有魅力谢谢=)
MODELID=$(system_profiler SPHardwareDataType | grep "Model Identifier" | cut -d: -f2 | tr -d " ")

case ${MODELID#*,} in
    1) model=MPB13;;
    2) model=MPB15;;
    3) model=MPB17;;
    *) echo "error: unrecognized model ID: $MODELID"; exit ;;
esac

hostname="${USERNAME}-$model"