Linux开发环境配置及shell script

来源:互联网 发布:蜂云网络 编辑:程序博客网 时间:2024/06/06 09:28

本文主要是以快速搭建环境为目标学习shell script。
转自https://hceng.cn/


之前写过一个Linux嵌入式开发环境搭建的博客,后面每次搭环境都翻来复制上面的代码。感觉就像记事本一样,还是有点用,这也是写博客的一点动力吧。
用了Linux也有段时间了,它的魅力也逐渐展现出来了。以前还在熟悉Linux命令的过程中,shell script就是个老虎,觉得没接触过,害怕,每次都绕开它。
直到这周遇到了ti的SDK,尝试一边百度,一边测它的脚本,感觉有点小入门了,于是想练习下。想到每次搭建环境重复操作的痛点,就拿它开刀吧。

0.环境搭建的几个方面

根据过去的经验,用虚拟机装好Ubuntu后,一般会做这样几个步骤:
1.安装vmware tools,以便复制粘贴和文件共享;
2.更新软件源,以便更快的下载软件;
3.安装及配置常用软件,比如:
  3-1.安装git,方面后续的一些安装;
  3-2.安装vim和简单配置;
  3-3.安装ftp和简单配置;
  3-4.安装ftp和简单配置;
  3-5.安装samba和简单配置;
  3-6.安装tmux、htop等;
4.安装开发所需的 g++等工具、库;
除了第一步,其它都计划用脚本实现。

厌烦了每次编辑了驱动都要拖进Linux主机进行编译,然后还得复制到开发板。
重新打造了工作流,只需三步:
编辑->make->insmod

1.检测当前环境

  • 在运行脚本前,需要检测一些东西:

1.1检测网络状态

  • 如果不能联网,后续的没必要做了。之前想过自动检测修复网络的,但想了想,网络的情况比较多,暂时搁置。而且刚装好虚拟机肯定是联网的,如果不能联网肯定是虚拟机设置的问题,也不是脚本能解决的。
    为了方便打印更改用户名,这里先设置几个变量:
#define echo print color.RED_COLOR='\E[1;31m'        PINK_COLOR='\E[1;35m'       YELOW_COLOR='\E[1;33m'       BLUE_COLOR='\E[1;34m'       GREEN_COLOR='\E[1;32m'      END_COLOR='\E[0m'           #set linux host user name.user_name=hceng
  • 检测网络函数:
check_network() {    ping -c 1 www.baidu.com > /dev/null 2>&1      if [ $? -eq 0 ];then          echo -e "${GREEN_COLOR}Network ok.${END_COLOR}"     else        echo -e "${RED_COLOR}Network failure!${END_COLOR}"          exit 1    fi}
  • 先ping一次百度,能够ping通就表示网络没问题。

1.2检测是否是root用户

  • 很多操作都需要root权限,因此必须使用root用户权限运行脚本,这里先检测是否是root用户:
# Check user must root.check_root() {    if [ $(id -u) != "0" ]; then        echo -e "${RED_COLOR}Error: You must be root to run this script, please use root.${END_COLOR}"        exit 1    fi}

1.3检测设置的用户是否存在

  • 现在用的用户名是hceng,后面为了方便其它用户使用,所以在前面定义了个变量,改变变量就可以修改用户。但为了防止设置的用户在系统中不存在,这里需要进行检测。
# Check set linux host user name.check_user_name() {    cat /etc/passwd|grep $user_name    if [ $? -eq 0 ];then        echo -e "${GREEN_COLOR}Check the set user name OK.${END_COLOR}"     else        echo -e "${RED_COLOR}Check the set user name failure!${END_COLOR}"         exit 1    fi}

1.4检测运行结果

  • 为检测某些命令,是否运行正常。
check_status() {    ret=$?    if [ "$ret" -ne "0" ]; then        echo -e "${RED_COLOR}Failed setup, aborting..${END_COLOR}"         exit 1    fi}

1.5获取系统版本信息

  • 后面更新源和装某些软件需要当前Ubuntu的版本代号。
# Get the code name of the Linux host release to the caller.get_host_type() {    local  __host_type=$1    local  the_host=`lsb_release -a 2>/dev/null | grep Codename: | awk {'print $2'}`    eval $__host_type="'$the_host'"}

2.更新软件源

  • 这里使用了阿里、网易和官方的三个源,应该没问题了。
    修改配置文件的原则就是先备份再修改。同时为了防止脚本再次运行覆盖掉备份,还需要检测是否已经存在了备份。
#This function will update the source of the software.update_software_source() {    local back_file=/etc/apt/sources.list.backup    if [ ! -e "$back_file" ];then          cp /etc/apt/sources.list $back_file             fi     check_status    get_host_type host_release    check_status    echo \    "#Ali source.    deb-src http://archive.ubuntu.com/ubuntu    $host_release main restricted     deb http://mirrors.aliyun.com/ubuntu/       $host_release main restricted    deb-src http://mirrors.aliyun.com/ubuntu/   $host_release main restricted multiverse universe     deb http://mirrors.aliyun.com/ubuntu/       $host_release-updates main restricted    deb-src http://mirrors.aliyun.com/ubuntu/   $host_release-updates main restricted multiverse universe    deb http://mirrors.aliyun.com/ubuntu/       $host_release universe    deb http://mirrors.aliyun.com/ubuntu/       $host_release-updates universe    deb http://mirrors.aliyun.com/ubuntu/       $host_release multiverse    deb http://mirrors.aliyun.com/ubuntu/       $host_release-updates multiverse    deb http://mirrors.aliyun.com/ubuntu/       $host_release-backports main restricted universe multiverse    deb-src http://mirrors.aliyun.com/ubuntu/   $host_release-backports main restricted universe multiverse     deb http://archive.canonical.com/ubuntu     $host_release partner    deb-src http://archive.canonical.com/ubuntu $host_release partner    deb http://mirrors.aliyun.com/ubuntu/       $host_release-security main restricted    deb-src http://mirrors.aliyun.com/ubuntu/   $host_release-security main restricted multiverse universe     deb http://mirrors.aliyun.com/ubuntu/       $host_release-security universe    deb http://mirrors.aliyun.com/ubuntu/       $host_release-security multiverse    #Netease source.    deb http://mirrors.163.com/ubuntu/          $host_release main restricted universe multiverse    deb http://mirrors.163.com/ubuntu/          $host_release-security main restricted universe multiverse    deb http://mirrors.163.com/ubuntu/          $host_release-updates main restricted universe multiverse    deb http://mirrors.163.com/ubuntu/          $host_release-proposed main restricted universe multiverse    deb http://mirrors.163.com/ubuntu/          $host_release-backports main restricted universe multiverse    deb-src http://mirrors.163.com/ubuntu/      $host_release main restricted universe multiverse    deb-src http://mirrors.163.com/ubuntu/      $host_release-security main restricted universe multiverse    deb-src http://mirrors.163.com/ubuntu/      $host_release-updates main restricted universe multiverse    deb-src http://mirrors.163.com/ubuntu/      $host_release-proposed main restricted universe multiverse    deb-src http://mirrors.163.com/ubuntu/      $host_release-backports main restricted universe multiverse    #Official source                                deb http://archive.ubuntu.com/ubuntu/       $host_release main restricted universe multiverse    deb http://archive.ubuntu.com/ubuntu/       $host_release-security main restricted universe multiverse    deb http://archive.ubuntu.com/ubuntu/       $host_release-updates main restricted universe multiverse    deb http://archive.ubuntu.com/ubuntu/       $host_release-proposed main restricted universe multiverse    deb http://archive.ubuntu.com/ubuntu/       $host_release-backports main restricted universe multiverse    deb-src http://archive.ubuntu.com/ubuntu/   $host_release main restricted universe multiverse    deb-src http://archive.ubuntu.com/ubuntu/   $host_release-security main restricted universe multiverse    deb-src http://archive.ubuntu.com/ubuntu/   $host_release-updates main restricted universe multiverse    deb-src http://archive.ubuntu.com/ubuntu/   $host_release-proposed main restricted universe multiverse    deb-src http://archive.ubuntu.com/ubuntu/   $host_release-backports main restricted universe multiverse" \    > /etc/apt/sources.list    check_status    #apt-get update 1>/dev/null    apt-get update    check_status        echo -e "${GREEN_COLOR}Update source completed.${END_COLOR}" }

3.安装软件及配置

  • 软件主要包括自己一般常用的软件,像vim、tmux、samba等。还有就是开发所需的g++、各种库。
    其中git要在vim前面,因为vim需要git下载。
# Execute an action.FA_DoExec() {    echo -e "${BLUE_COLOR}==> Executing: '${@}'.${END_COLOR}"    eval $@ || exit $?}# Install list software.install_software() {    local install_software_list=("git" "vim" "tmux" "htop" "vsftpd" "openssh-server" "nfs-kernel-server" "portmap" "samba")    echo -e "${PINK_COLOR}install_software_list:${install_software_list[*]}.${END_COLOR}"     #install git    if (echo "${install_software_list[@]}" | grep -wq "git");then        apt-get -y install git && echo -e "${BLUE_COLOR}git install completed.${END_COLOR}"     fi    #install and configure vim    if (echo "${install_software_list[@]}" | grep -wq "vim");then        apt-get -y install vim && vim_configure && echo -e "${BLUE_COLOR}vim install completed.${END_COLOR}"     fi    #install tmux    if (echo "${install_software_list[@]}" | grep -wq "tmux");then        apt-get -y install tmux && echo -e "${BLUE_COLOR}tmux install completed.${END_COLOR}"     fi    #install htop    if (echo "${install_software_list[@]}" | grep -wq "htop");then        apt-get -y install htop && echo -e "${BLUE_COLOR}htop install completed.${END_COLOR}"     fi    #install and configure vsftpd    if (echo "${install_software_list[@]}" | grep -wq "vsftpd");then        apt-get -y install vsftpd && ftp_configure && echo -e "${BLUE_COLOR}vsftpd install completed.${END_COLOR}"     fi    #install openssh-server    if (echo "${install_software_list[@]}" | grep -wq "openssh-server");then        apt-get -y install openssh-server && echo -e "${BLUE_COLOR}openssh-server install completed.${END_COLOR}"     fi    #install and configure nfs-kernel-server    if (echo "${install_software_list[@]}" | grep -wq "nfs-kernel-server");then        apt-get -y install nfs-kernel-server && nfs_configure && \        /etc/init.d/nfs-kernel-server restart && echo -e "${BLUE_COLOR}nfs-kernel-server install completed.${END_COLOR}"     fi    #install portmap    if (echo "${install_software_list[@]}" | grep -wq "portmap");then        apt-get -y install portmap && echo -e "${BLUE_COLOR}portmap install completed.${END_COLOR}"     fi    #install and configure samba    if (echo "${install_software_list[@]}" | grep -wq "samba");then        apt-get -y install samba && samba_configure && echo -e "${BLUE_COLOR}samba install completed.${END_COLOR}"     fi    #others    get_host_type host_release    FA_DoExec apt-get -y install \    gnupg flex bison gperf build-essential \    zip curl libc6-dev libncurses5-dev libncurses5-dev:i386 x11proto-core-dev \    libx11-dev:i386 libreadline6-dev:i386 \    libgl1-mesa-glx-lts-$host_release:i386 libgl1-mesa-dev-lts-$host_release \    g++-multilib mingw32 tofrodos libncurses5-dev:i386 \    python-markdown libxml2-utils xsltproc zlib1g-dev:i386    if [ ! -h /usr/lib/i386-linux-gnu/libGL.so ]; then    FA_DoExec ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 \        /usr/lib/i386-linux-gnu/libGL.so    fi    # Development support    FA_DoExec apt-get -y install \    dos2unix minicom gawk    echo -e "${GREEN_COLOR}software install completed.${END_COLOR}"}

3.1配置vim

  • vim的配置文件来自GitHub的Amir,我就不重复造轮子了。
    这里只是先clone下来,然后执行安装脚本。这里值得一提的是执行脚本要指定用户运行,不然会以root用户的路径设置,导致脚本运行错误。
# Configure vim form github.vim_configure() {    git clone --depth=1 https://github.com/amix/vimrc.git /home/$user_name/.vim_runtime     touch /home/$user_name/.vim_runtime/my_configs.vim    echo ":set number" > /home/$user_name/.vim_runtime/my_configs.vim    chown -R $user_name /home/$user_name/.vim_runtime     chmod u+x /home/$user_name/.vim_runtime/install_awesome_vimrc.sh    su - $user_name -s /home/$user_name/.vim_runtime/install_awesome_vimrc.sh}

3.2配置ftp

  • FTP主要是修改为可写。在使用MobaXterm SSH登陆后,可以直接通过左边的Sftp进行文件的传输,貌似这个可以不用配置了。
# Configure ftp.ftp_configure() {    sed  -i 's/#loacl_enable=YES/loacl_enable=YES/g'  /etc/vsftpd.conf    sed  -i 's/#write_enable=YES/write_enable=YES/g'  /etc/vsftpd.conf}

3.3配置nfs

  • 在前面的工作流中,开发板直接运行Linux主机中交叉编译好的模块,是通过nfs实现的。因此需要开发板开机后就挂载nfs.
    习惯在Linux主机中单独开辟一个路径作为工作目录,因此这里是设置的整个工作目录。
# Configure nfs.nfs_configure() {    local work_file=/work    if [ ! -d "$work_file" ];then          mkdir /work    fi    check_status    grep "/work" /etc/exports 1>/dev/null    if [ $? -ne 0 ];then        sed -i '$a\/work  *(rw,sync,no_root_squash,no_subtree_check)' /etc/exports    fi}

3.4配置samba

  • samba也是实现前面工作流不可确少的一环。这样就不用每次修改代码后,通过ftp上传到Linux主机。
    samba在Windows上的使用是:
    Windows+r,打开命令窗口,
    然后输入:\\192.168.1.xx
    最后建议右键,映射网络驱动,方面后续打开。
    测试中需要重启生效。
# Configure samba.samba_configure() {    local back_file=/etc/samba/smb.conf.bakup    if [ ! -e "$back_file" ];then          cp /etc/samba/smb.conf $back_file           fi     check_status    grep "/work" /etc/samba/smb.conf 1>/dev/null    if [ $? -ne 0 ];then        sed -i \        '$a[share_work]\n\        path = \/work\n\        available = yes\n\        public = yes\n\        guest ok = yes\n\        read only = no\n\        writeable = yes\n' /etc/samba/smb.conf    fi    /etc/init.d/samba restart    chmod -R 777 /work}

4.完整代码及心得

完整代码链接

#!/bin/bash# -------------------------------------------------------------------------------# Filename:    setup_ubuntu_host_env.sh# Revision:    1.0# Date:        2017/08/05# Author:      hceng# Email:       huangcheng.job@foxmail.com# Website:     www.hceng.cn# Function:    setup ubuntu host env.# Notes:       learn# -------------------------------------------------------------------------------## Description:     #1.check env.#1.1 check network  #1.2 check use root  #1.3 check set name  #1.4 configure samba   #2.update software sourcev.  #3.install vim tmux  htop ftp ssh nfs samba.#3.1 configure vim  #3.2 configure ftp  #3.3 configure nfs  #3.4 configure samba #4.install system tool eg:g++ ...## -------------------------------------------------------------------------------#define echo print color.RED_COLOR='\E[1;31m'        PINK_COLOR='\E[1;35m'       YELOW_COLOR='\E[1;33m'       BLUE_COLOR='\E[1;34m'       GREEN_COLOR='\E[1;32m'      END_COLOR='\E[0m'           #Set linux host user name.user_name=hceng# Check network.check_network() {    ping -c 1 www.baidu.com > /dev/null 2>&1      if [ $? -eq 0 ];then          echo -e "${GREEN_COLOR}Network OK.${END_COLOR}"     else        echo -e "${RED_COLOR}Network failure!${END_COLOR}"          exit 1    fi}# Check user must root.check_root() {    if [ $(id -u) != "0" ]; then        echo -e "${RED_COLOR}Error: You must be root to run this script, please use root.${END_COLOR}"        exit 1    fi}# Check set linux host user name.check_user_name() {    cat /etc/passwd|grep $user_name    if [ $? -eq 0 ];then        echo -e "${GREEN_COLOR}Check the set user name OK.${END_COLOR}"     else        echo -e "${RED_COLOR}Check the set user name failure!${END_COLOR}"         exit 1    fi}# Check the results of the operation.check_status() {    ret=$?    if [ "$ret" -ne "0" ]; then        echo -e "${RED_COLOR}Failed setup, aborting..${END_COLOR}"         exit 1    fi}# Get the code name of the Linux host release to the caller.get_host_type() {    local  __host_type=$1    local  the_host=`lsb_release -a 2>/dev/null | grep Codename: | awk {'print $2'}`    eval $__host_type="'$the_host'"}#This function will update the source of the software.update_software_source() {    local back_file=/etc/apt/sources.list.backup    if [ ! -e "$back_file" ];then          cp /etc/apt/sources.list $back_file             fi     check_status    get_host_type host_release    check_status    echo \    "#Ali source.    deb-src http://archive.ubuntu.com/ubuntu    $host_release main restricted     deb http://mirrors.aliyun.com/ubuntu/       $host_release main restricted    deb-src http://mirrors.aliyun.com/ubuntu/   $host_release main restricted multiverse universe     deb http://mirrors.aliyun.com/ubuntu/       $host_release-updates main restricted    deb-src http://mirrors.aliyun.com/ubuntu/   $host_release-updates main restricted multiverse universe    deb http://mirrors.aliyun.com/ubuntu/       $host_release universe    deb http://mirrors.aliyun.com/ubuntu/       $host_release-updates universe    deb http://mirrors.aliyun.com/ubuntu/       $host_release multiverse    deb http://mirrors.aliyun.com/ubuntu/       $host_release-updates multiverse    deb http://mirrors.aliyun.com/ubuntu/       $host_release-backports main restricted universe multiverse    deb-src http://mirrors.aliyun.com/ubuntu/   $host_release-backports main restricted universe multiverse     deb http://archive.canonical.com/ubuntu     $host_release partner    deb-src http://archive.canonical.com/ubuntu $host_release partner    deb http://mirrors.aliyun.com/ubuntu/       $host_release-security main restricted    deb-src http://mirrors.aliyun.com/ubuntu/   $host_release-security main restricted multiverse universe     deb http://mirrors.aliyun.com/ubuntu/       $host_release-security universe    deb http://mirrors.aliyun.com/ubuntu/       $host_release-security multiverse    #Netease source.    deb http://mirrors.163.com/ubuntu/          $host_release main restricted universe multiverse    deb http://mirrors.163.com/ubuntu/          $host_release-security main restricted universe multiverse    deb http://mirrors.163.com/ubuntu/          $host_release-updates main restricted universe multiverse    deb http://mirrors.163.com/ubuntu/          $host_release-proposed main restricted universe multiverse    deb http://mirrors.163.com/ubuntu/          $host_release-backports main restricted universe multiverse    deb-src http://mirrors.163.com/ubuntu/      $host_release main restricted universe multiverse    deb-src http://mirrors.163.com/ubuntu/      $host_release-security main restricted universe multiverse    deb-src http://mirrors.163.com/ubuntu/      $host_release-updates main restricted universe multiverse    deb-src http://mirrors.163.com/ubuntu/      $host_release-proposed main restricted universe multiverse    deb-src http://mirrors.163.com/ubuntu/      $host_release-backports main restricted universe multiverse    #Official source                                deb http://archive.ubuntu.com/ubuntu/       $host_release main restricted universe multiverse    deb http://archive.ubuntu.com/ubuntu/       $host_release-security main restricted universe multiverse    deb http://archive.ubuntu.com/ubuntu/       $host_release-updates main restricted universe multiverse    deb http://archive.ubuntu.com/ubuntu/       $host_release-proposed main restricted universe multiverse    deb http://archive.ubuntu.com/ubuntu/       $host_release-backports main restricted universe multiverse    deb-src http://archive.ubuntu.com/ubuntu/   $host_release main restricted universe multiverse    deb-src http://archive.ubuntu.com/ubuntu/   $host_release-security main restricted universe multiverse    deb-src http://archive.ubuntu.com/ubuntu/   $host_release-updates main restricted universe multiverse    deb-src http://archive.ubuntu.com/ubuntu/   $host_release-proposed main restricted universe multiverse    deb-src http://archive.ubuntu.com/ubuntu/   $host_release-backports main restricted universe multiverse" \    > /etc/apt/sources.list    check_status    #apt-get update 1>/dev/null    apt-get update    check_status        echo -e "${GREEN_COLOR}Update source completed.${END_COLOR}" }# Configure vim form github.vim_configure() {    git clone --depth=1 https://github.com/amix/vimrc.git /home/$user_name/.vim_runtime     touch /home/$user_name/.vim_runtime/my_configs.vim    echo ":set number" > /home/$user_name/.vim_runtime/my_configs.vim    chown -R $user_name /home/$user_name/.vim_runtime     chmod u+x /home/$user_name/.vim_runtime/install_awesome_vimrc.sh    su - $user_name -s /home/$user_name/.vim_runtime/install_awesome_vimrc.sh}# Configure ftp.ftp_configure() {    sed  -i 's/#loacl_enable=YES/loacl_enable=YES/g'  /etc/vsftpd.conf    sed  -i 's/#write_enable=YES/write_enable=YES/g'  /etc/vsftpd.conf}# Configure nfs.nfs_configure() {    local work_file=/work    if [ ! -d "$work_file" ];then          mkdir /work    fi    grep "/work" /etc/exports 1>/dev/null    if [ $? -ne 0 ];then        sed -i '$a\/work  *(rw,sync,no_root_squash,no_subtree_check)' /etc/exports    fi}# Configure samba.samba_configure() {    local back_file=/etc/samba/smb.conf.bakup    if [ ! -e "$back_file" ];then          cp /etc/samba/smb.conf $back_file           fi     check_status    grep "/work" /etc/samba/smb.conf 1>/dev/null    if [ $? -ne 0 ];then        sed -i \        '$a[share_work]\n\        path = \/work\n\        available = yes\n\        public = yes\n\        guest ok = yes\n\        read only = no\n\        writeable = yes\n' /etc/samba/smb.conf    fi    /etc/init.d/samba restart    chmod -R 777 /work}# Execute an action.FA_DoExec() {    echo -e "${BLUE_COLOR}==> Executing: '${@}'.${END_COLOR}"    eval $@ || exit $?}# Install list software.install_software() {    local install_software_list=\    ("git" "vim" "tmux" "htop" "vsftpd" "openssh-server" "nfs-kernel-server" "portmap" "samba")    echo -e "${PINK_COLOR}install_software_list:${install_software_list[*]}.${END_COLOR}"     #install git    if (echo "${install_software_list[@]}" | grep -wq "git");then        apt-get -y install git && echo -e "${BLUE_COLOR}git install completed.${END_COLOR}"     fi    #install and configure vim    if (echo "${install_software_list[@]}" | grep -wq "vim");then        apt-get -y install vim && vim_configure && echo -e "${BLUE_COLOR}vim install completed.${END_COLOR}"     fi    #install tmux    if (echo "${install_software_list[@]}" | grep -wq "tmux");then        apt-get -y install tmux && echo -e "${BLUE_COLOR}tmux install completed.${END_COLOR}"     fi    #install htop    if (echo "${install_software_list[@]}" | grep -wq "htop");then        apt-get -y install htop && echo -e "${BLUE_COLOR}htop install completed.${END_COLOR}"     fi    #install and configure vsftpd    if (echo "${install_software_list[@]}" | grep -wq "vsftpd");then        apt-get -y install vsftpd && ftp_configure && echo -e "${BLUE_COLOR}vsftpd install completed.${END_COLOR}"     fi    #install openssh-server    if (echo "${install_software_list[@]}" | grep -wq "openssh-server");then        apt-get -y install openssh-server && echo -e "${BLUE_COLOR}openssh-server install completed.${END_COLOR}"     fi    #install and configure nfs-kernel-server    if (echo "${install_software_list[@]}" | grep -wq "nfs-kernel-server");then        apt-get -y install nfs-kernel-server && nfs_configure && \        /etc/init.d/nfs-kernel-server restart && echo -e "${BLUE_COLOR}nfs-kernel-server install completed.${END_COLOR}"     fi    #install portmap    if (echo "${install_software_list[@]}" | grep -wq "portmap");then        apt-get -y install portmap && echo -e "${BLUE_COLOR}portmap install completed.${END_COLOR}"     fi    #install and configure samba    if (echo "${install_software_list[@]}" | grep -wq "samba");then        apt-get -y install samba && samba_configure && echo -e "${BLUE_COLOR}samba install completed.${END_COLOR}"     fi    #others    get_host_type host_release    FA_DoExec apt-get -y install \    gnupg flex bison gperf build-essential \    zip curl libc6-dev libncurses5-dev libncurses5-dev:i386 x11proto-core-dev \    libx11-dev:i386 libreadline6-dev:i386 \    libgl1-mesa-glx-lts-$host_release:i386 libgl1-mesa-dev-lts-$host_release \    g++-multilib mingw32 tofrodos libncurses5-dev:i386 \    python-markdown libxml2-utils xsltproc zlib1g-dev:i386    if [ ! -h /usr/lib/i386-linux-gnu/libGL.so ]; then    FA_DoExec ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 \        /usr/lib/i386-linux-gnu/libGL.so    fi    # Development support    FA_DoExec apt-get -y install \    dos2unix minicom gawk    echo -e "${GREEN_COLOR}software install completed.${END_COLOR}"}check_networkcheck_rootcheck_user_nameupdate_software_sourceinstall_softwareecho -e "${GREEN_COLOR}===================================================${END_COLOR}" echo -e "${GREEN_COLOR}============setup ubuntu host env ok!==============${END_COLOR}" echo -e "${GREEN_COLOR}===================================================${END_COLOR}"su $user_nameexit 0

  • 就目前来看,shell脚本还不算太难。主要就是提取某个文本内容,然后做出判断,对应执行。技巧性还是蛮多的,很有乐趣。
    遇到要实现某个功能,百度一下也基本有。调试的时候,能够打印出变量,或者提出局部代码进行运行测试,还是很方便的。
原创粉丝点击