在多个环境中通过/ bin / bash shell脚本运行脚本的最佳方法是?

时间:2019-02-13 21:45:44

标签: python bash bin

我有一个python脚本,该脚本在localhost上运行,并在命令行中使用自变量进行开发,在开发过程中为python script.py development-在localhost中为python script.py localhost-

现在,我想运行此脚本-运行脚本/bin/bash sh时, 因此我想从/bin/.bash脚本运行此脚本。 我在sh脚本中添加了标题:#!/usr/bin/env python

我可以通过什么方式实现这一目标?

do
    if [ $1 == "local" ]; then
      python script.py $1

    elif [ $1 == "development" ]; then
      python script.py $1

什么我可以做些什么来改进此脚本?

2 个答案:

答案 0 :(得分:1)

由于$1已经包含了您想要的内容,因此不需要该条件。

如果您的脚本是Bash脚本,则应将#!/bin/bash(或您的本地等效文件)放在shebang行中。但是,此特定脚本不使用Bash功能,因此可能有用地编码为运行POSIX sh

#!/bin/sh

case $1 in
  local|development) ;;
  *) echo "Syntax: $0 local|development" >&2; exit 2;;
esac

exec python script.py "$1"

一种更有用的方法是将本地系统配置为使用./script.py或类似名称直接运行脚本,并让脚本本身负责解析其命令行参数。具体如何执行取决于您的精确环境,但是在大多数类似U * x的系统上,您将#!/usr/bin/env python放在script.py本身的第一行中,并把chmod +x作为文件。

答案 1 :(得分:0)

我想这就是你想要的...

#!/bin/bash

if [ ! "$@" ]; then
  echo "Usage: $1 (local|development) "
  exit
fi

if [ "$1" == "local" ]; then
    python script.py "$1"
    echo "$1"
elif
    [ "$1" == "development" ]; then
    python script.py "$1"
    echo "$1"
fi

将上面的bash代码保存到名为script.sh的文件中。使它可执行:chmod +x script.sh。然后运行它:

./script.sh

如果未指定任何参数,则脚本将仅打印有关如何使用它的信息。

./script.sh local-执行python script.py local

./script.sh development-执行python script.py开发

您可以用echo注释行,将它们留在那里只是出于调试目的(在echo行前面添加来注释它们)。