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