是否可以在shell脚本中运行python命令?

时间:2015-08-04 21:55:49

标签: shell

我正在学习一些基本的脚本编写,我认为我会尝试“自动化”工作中的小任务,并使用户在终端内工作时更加轻松。

    echo "Activating the Bin" 
    Source=source
    BinActivate=/opt/ia3/bin/activate 
    SourceBinActivate=$Source $BinActivate
    if [ pwd == pwd ]
            then
            pwd #Log current directory to console
            sleep 2s
            eval $SourceBinActivate # Run source /opt/ia3/bin/activate
    else
            echo "Error, aborting process";  pwd #exit
    fi

当我的脚本运行eval时,我的终端返回错误:/ opt / ia3 / bin / activate:Permission Denied。

甚至可以在我的终端中运行这样的命令吗? 我是否需要以特定用户身份运行此操作?我应该在哪里研究如何在我的终端中以用户身份运行命令?

非常感谢任何方向或见解!

2 个答案:

答案 0 :(得分:1)

您的问题与执行Python代码没有任何关系。这里没有Python。您的代码在此行中失败:

SourceBinActivate=$Source $BinActivate

它没有做你认为它正在做的事情。您认为它将变量SourceBinActivate分配给扩展两个变量SourceBinActivate的值。但是,真正做的是暂时将SourceBinActivate分配给Source的值,然后执行 BinActivate的值。 (一旦命令完成,SourceBinActivate的值将恢复为之前的值。)由于该值不是可执行文件,因此shell会报告“权限被拒绝。”

要指定一个变量来保存多标记值,您需要引用值:

SourceBinActivate="$Source $BinActivate"

答案 1 :(得分:0)

如果它的python代码不应该打印而不是打印?假设您的示例代码是" name.py"文件。如果你的样本确实在&name; name.py"文件,尝试类似python路径/.../ name.py,以及来自" name.sh"文件。

编辑:再看一下你的代码,它根本不是python。如果python是你想要运行的代码,那么从一些小东西开始,比如:

print" Test" python 3中的#print(string)。

.sh中的上一行,然后执行./python_code.sh

最后使您的示例代码适应python语法。