将字符串变量与列表进行比较并输出到Mac bash shell中的变量

时间:2014-01-11 21:36:10

标签: macos bash shell terminal

好的,我是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"-"

1 个答案:

答案 0 :(得分:1)

我看到如果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"