我正在学习一些基本的脚本编写,我认为我会尝试“自动化”工作中的小任务,并使用户在终端内工作时更加轻松。
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。
甚至可以在我的终端中运行这样的命令吗? 我是否需要以特定用户身份运行此操作?我应该在哪里研究如何在我的终端中以用户身份运行命令?
非常感谢任何方向或见解!
答案 0 :(得分:1)
您的问题与执行Python代码没有任何关系。这里没有Python。您的代码在此行中失败:
SourceBinActivate=$Source $BinActivate
它没有做你认为它正在做的事情。您认为它将变量SourceBinActivate
分配给扩展两个变量Source
和BinActivate
的值。但是,真正做的是暂时将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语法。