我有一个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
什么我可以做些什么来改进此脚本?
答案 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行前面添加#来注释它们)。