以下python脚本:
def run_build(path):
cmd = path + '/build.sh'
p = subprocess.call(cmd)
以下bash脚本执行了另外两个脚本:
#!/bin/bash
cd "${0%/*}"
echo $(./create_env.sh)
echo $(./set_webhook.sh)
echo $(docker-compose up -d --build)
create_env.sh:
#!/bin/bash
PORT=$(comm -23 <(seq 7000 8000 | sort) <(ss -tan | awk '{print $4}' | cut -d':' -f2 | grep "[0-9]\{1,5\}" | sort -u) | head -n 1)
MONGODB_PORT=$(comm -23 <(seq 27017 27100 | sort) <(ss -tan | awk '{print $4}' | cut -d':' -f2 | grep "[0-9]\{1,5\}" | sort -u) | head -n 1)
destdir=$PWD/.env
echo >> "$destdir"
echo "APP_PORT=$PORT" >> "$destdir"
echo "MONGODB_PORT=$MONGODB_PORT" >> "$destdir"
输出为:
Path: /home/navka/Environments/teststartupservicebot/build.sh
./create_env.sh: line 2: head: command not found
./create_env.sh: line 2: comm: command not found
./create_env.sh: line 2: seq: command not found
...
我的问题在哪里?谢谢!
我会说您的第一步步骤将是放置:
echo $PATH
作为#!/bin/bash
中create_env.sh
shebang行之后的第一行,以确保路径已设置。
确保它包含那些可执行文件的目录(可能是/usr/bin
),您可以通过从命令行执行(例如)which comm
或where comm
来找到这些目录。
如果它没有包含相关目录,这说明了为什么找不到可执行文件。在这种情况下,您将需要发现为什么它们不存在。
也许最简单的解决方法就是添加类似以下内容:
PATH="${PATH}:/usr/bin"
到您的环境设置脚本。这将确保路径does具有相关条目。
并且,顺便说一句,如果build.sh
中的这些行是要累积的(例如,set_workbook
需要由create_env
进行的环境更改,则应注意,这些行当前在sub -shells,这意味着从子shell退出后,更改不会持续。
在将它们持久保存到文件中时不一定是这种情况,后续步骤可以读取。
如果do需要在环境中进行后续步骤(而不是文件)的更改,则需要在当前shell的上下文中提供它们,例如:
. ./create_env.sh
正如我说过的,这可能不是必需的,但是为了以防万一,您可能需要研究一下。