<p>这就是你想要的,包括我和其他人在评论中提到的一些东西。你知道吗</p>
<pre class="lang-sh prettyprint-override"><code>#!/bin/bash
COStesting()
{
local Name
local Gender
if [ "$1" == "A" ]
then
Name="Tiger"
Gender="Male"
elif [ "$1" == "B" ]
then
Name="Lion"
Gender="Male"
fi
pass=$(Name="$Name" Gender="$Gender" python3 - <<-END
from os import environ
print(environ['Name'], environ['Gender'])
END
)
echo $pass
}
</code></pre>
<ul>
<li>请确保从这里复制的缩进是用制表符而不是空格来完成的</li>
</ul>
<p>在这里所做的:</p>
<ul>
<li><p>注释:<a href="https://stackoverflow.com/questions/58758318/shell-script-with-python/58758503#comment103804313_58758318">Shell script with Python</a></p>
<blockquote>
<p>You cannot access shell variables created in a shell script inside Python as Python variables. One way is to to export shell variables into the environment, so they become environment variables, and then use the environment access mechanism in Python to retrieve the values.</p>
</blockquote>
<p>我所做的只是为<code>python</code>命令导出它们,而不是全局导出。</p></li>
<li>注释:<a href="https://stackoverflow.com/questions/58758318/shell-script-with-python/58758503#comment103804335_58758318">Shell script with Python</a>
<blockquote>
<p><code>COStesting("Test")</code> isn't valid shell function syntax; you can't have anything between the <code>(</code> <code>)</code> other than blanks. </p>
</blockquote></li>
<li>注释:<a href="https://stackoverflow.com/questions/58758318/shell-script-with-python/58758503#comment103804428_58758318">Shell script with Python</a>
<blockquote>
<p>beware that syntax for assignment in bash is not <code>var = val</code> but <code>var=val</code>. This alone must be causing command not found for ya </p>
</blockquote></li>
<li>注释:<a href="https://stackoverflow.com/questions/58758318/shell-script-with-python/58758503#comment103804744_58758318">Shell script with Python</a>
<blockquote>
<p>for indendation of here-strings you need to use <code><<-END</code> and tabs not spaces</p>
</blockquote></li>
<li>您在<code>[</code>命令中使用了单<code>=</code>而不是双<code>==</code>作为比较运算符</li>
<li><code>pass</code>是函数中的局部变量。要将其输出,您需要<code>echo</code>将其从函数输出到标准输出。你知道吗</li>
</ul>
<p>要使用这个函数,您首先<code>source <filename.sh></code>(除非您只是用这个函数将命令附加到文件中),然后可以像<code>$(COStesting "$AorB")</code>一样使用它,其中<code>$AorB</code>是包含<code>'A'</code>或<code>'B'</code>的变量。你知道吗</p>