看其中的usage函数,列出了脚本参数的使用
usage() {
    echo "Running run.sh to start a docker container for XRT runtime. "
    echo ""
    echo "Usage:"
    echo "./run.sh      --version <version> --os-version <os-version>"
    echo "./run.sh       -v       <version>  -o          <os-version>"
    echo "<version>      : 2018.3 / 2019.1 / 2019.2"
    echo "<os-version>   : ubuntu-18.04 / ubuntu-16.04 / centos"
    echo ""
    echo "Example:"
    echo "Start docker container whith 2019.2 XRT on Ubuntu 18.04"
    echo "  ./run.sh -v 2019.2 -o ubuntu-18.04"
    echo ""
    echo "Additional parameters: "
    echo "-c [command] : Execute specific command when start docker container"
    echo "--pull       : Pull docker image before run"
}参数初始化和确认安装xrt并刷新shell
COMMAND="/bin/bash"
PLATFORM="alveo-u200"
UPDATE=0
/opt/xilinx/xrt/bin/xbutil list > /dev/null
if [ $? != 0 ] ; then
echo "Please check XRT is installed and Shell is flashed on FPGA. See:"
echo "/opt/xilinx/xrt/bin/xbutil list"
echo ""
echo "You can use host_setup.sh to install and flash. "
exit 1
fi
确认安装docker
check_docker() {
    DOCKER_INFO=`docker info 2>/dev/null`
    if [ $? == 0 ] ; then
        return 0
    fi
    OSVERSION=`grep '^ID=' /etc/os-release | awk -F= '{print $2}' | tr -d '"'`
    if [[ "$OSVERSION" == "ubuntu" ]]; then
        DOCKER_INFO=`apt list --installed 2>/dev/null | grep docker-ce`
    elif [[ "$OSVERSION" == "centos" ]]; then
        DOCKER_INFO=`yum list installed 2>/dev/null | grep docker-ce`
    else
        return 0
    fi
    if [ $? == 0 ] ; then
        DOCKER_INFO=`docker info 2>/dev/null`
        if [ $? != 0 ] ; then
            docker info
            return 1
        fi
    else
        echo "Docker is NOT installed. Please run "
        echo "    ./utilities/docker_install.sh"
        echo "to install docker service. "
        return 1
    fi
}参数解析
while true
do
case "$1" in
-v|--version ) VERSION="$2" ; shift 2 ;;
-o|--os-version ) OSVERSION="$2" ; shift 2 ;;
-c ) COMMAND="$2" ; shift 2 ;;
--pull ) UPDATE=1 ; shift 1 ;;
-h|--help ) usage ; exit 1 ;;
*) break ;;
esac
done
if [ $? != 0 ] ; then echo "Failed parsing options." >&2 ; usage; exit 1 ; fi
确认板卡是否为需要特殊处理的u50
if [[ "$VERSION" == "2019.1" ]]; then
read -r -p "${1:-Is this for U50? [y/n]:} response
case "$response" in
[yY][eE][sS]|[yY])
PLATFORM="alveo-u50"
;;
*)
;;
esac
fi
配置文件conf/spec.txt中查找对应的IMAGE TAG
COMB="${PLATFORM}_${VERSION}_${OSVERSION}"
if grep -q $COMB "conf/spec.txt"; then
IMAGE_TAG=`grep ^$COMB: conf/spec.txt | awk -F':' '{print $2}' | awk -F';' '{print $5}' | awk -F= '{print $2}'`
else
usage
echo ""
list
exit 1
fi

DOCKER_IMAGE="xilinx/xilinx_runtime_base:$IMAGE_TAG"
# Mapping XRT user function and management function
DEVICES=""
for xclf in /dev/xclmgmt*
do
DEVICES="$DEVICES --device=$xclf:$xclf"
done
for usrf in /dev/dri/renderD*
do
DEVICES="$DEVICES --device=$usrf:$usrf"
done
if [[ "$UPDATE" == 1 ]]; then
#Update docker image
echo "Pull docker image: $DOCKER_IMAGE"
docker pull $DOCKER_IMAGE
fi
运行docker,并且可以有附带的命令
echo "Run docker as:"
echo "docker run --rm $DEVICES -it $DOCKER_IMAGE"
docker run \
--rm \
$DEVICES \
-it \
$DOCKER_IMAGE \
/bin/bash -c \
"$COMMAND"
                



