1.我的环境是Mac 、zshrc
2.非 zshrc 的需要修改基本
3.FLUTTER_PATH123 需要修改成自己sdk的路径
4. zshrc中需要注释和解除注释的内容行,前面不要有空格
脚本代码
#!/bin/bash
printf "
#######################################################################
# FLutter SDK 版本切换脚本
# wkw
# 【2.10.5】【3.17.2】【3.19.1】
# 当前使用添加注释、删除注释的方法来切换
#######################################################################
"
ZSHRC_FILE="$HOME/.zshrc"
FLUTTER_PATH1="/Applications/_flutter/bin"
FLUTTER_PATH2="/Applications/_flutter_flutter/flutter_flutter/bin"
FLUTTER_GIT_URL="export FLUTTER_GIT_URL=https://gitee.com/openharmony-sig/flutter_flutter.git"
FLUTTER_PATH3="/Applications/_flutter3.19.1/bin"
function comment_out_path {
if grep -q "^export PATH=$1" "$ZSHRC_FILE"; then
sed -i '' "s|^export PATH=$1:\$PATH|# export PATH=$1:\$PATH|" "$ZSHRC_FILE"
if [[ $? -eq 0 ]]; then
echo " 🐯🐯已注释: export PATH=$1:\$PATH"
else
echo " 🐯🐯未能注释: export PATH=$1:\$PATH"
fi
else
echo " 🐯🐯未找到: export PATH=$1:\$PATH"
fi
}
function uncomment_path {
if grep -q "^# export PATH=$1" "$ZSHRC_FILE"; then
sed -i '' "s|^# export PATH=$1:\$PATH|export PATH=$1:\$PATH|" "$ZSHRC_FILE"
if [[ $? -eq 0 ]]; then
echo " 🐯🐯已取消注释: export PATH=$1:\$PATH"
else
echo " 🐯🐯未能取消注释: export PATH=$1:\$PATH"
fi
else
echo " 🐯🐯未找到注释: export PATH=$1:\$PATH"
fi
}
function comment_out_git_url {
if grep -q "^$FLUTTER_GIT_URL" "$ZSHRC_FILE"; then
sed -i '' "s|^$FLUTTER_GIT_URL|# $FLUTTER_GIT_URL|" "$ZSHRC_FILE"
if [[ $? -eq 0 ]]; then
echo " 🐯🐯已注释: $FLUTTER_GIT_URL"
else
echo " 🐯🐯未能注释: $FLUTTER_GIT_URL"
fi
else
echo " 🐯🐯未找到: $FLUTTER_GIT_URL"
fi
}
function uncomment_git_url {
if grep -q "^# $FLUTTER_GIT_URL" "$ZSHRC_FILE"; then
sed -i '' "s|^# $FLUTTER_GIT_URL|$FLUTTER_GIT_URL|" "$ZSHRC_FILE"
if [[ $? -eq 0 ]]; then
echo " 🐯🐯已取消注释: $FLUTTER_GIT_URL"
else
echo " 🐯🐯未能取消注释: $FLUTTER_GIT_URL"
fi
else
echo " 🐯🐯未找到注释: $FLUTTER_GIT_URL"
fi
}
while :; do
printf "
🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯 选择你的FlutterSdk版本: 🐯🐯🐯🐯🐯🐯🐯🐯🐯🐯
1. ⚠️ 【Flutter】【2.10.5】 大象、驾多宝
2. ⚠️ 【Flutter】【3.7.12】 ohos 鸿蒙适配版本
3. ⚠️ 【Flutter】【3.19.1】 大象2.0
"
read -p " 🐯🐯 == 请输入: " number
if [[ ! ${number} =~ ^[1-3q]$ ]]; then
echo "⚠️ 输入错误! 只允许输入 1 ~ 3 和 q"
else
case "$number" in
1)
echo " <══════ 选择了 2.10.5 版本 ══════>"
comment_out_path "$FLUTTER_PATH2"
comment_out_path "$FLUTTER_PATH3"
uncomment_path "$FLUTTER_PATH1"
comment_out_git_url
break
;;
2)
echo " <══════ 选择了 3.7.12 版本 ══════>"
comment_out_path "$FLUTTER_PATH1"
comment_out_path "$FLUTTER_PATH3"
uncomment_path "$FLUTTER_PATH2"
uncomment_git_url
break
;;
3)
echo " <══════ 选择了 3.19.1 版本 ══════>"
comment_out_path "$FLUTTER_PATH1"
comment_out_path "$FLUTTER_PATH2"
uncomment_path "$FLUTTER_PATH3"
comment_out_git_url
break
;;
q)
exit
;;
esac
fi
done
echo " "
echo " <════════════ 修改完毕 ════════════>"
# 打印调试信息
echo " "
echo " <══════ 重新加载 .zshrc 文件 ══════>"
source "$ZSHRC_FILE"
# 打印 .zshrc 文件内容
function print_content {
while IFS= read -r line; do
printf " ║ %-120s \n" "$line"
done < "$ZSHRC_FILE"
}
echo " "
echo " <════════════════════════════当前 .zshrc 文件内容═════════════════════════════>"
echo " ╔════════════════════════════════════════════════════════════════════════════"
print_content
echo " ╚════════════════════════════════════════════════════════════════════════════"
echo " "
# 执行 flutter doctor
echo " <══════ 执行 flutter doctor ══════>"
flutter doctor