【发布时间】:2017-01-04 21:08:15
【问题描述】:
我正在编写一个在创建 docker 容器时运行的 startup.sh 脚本。
#!/bin/bash
python manage.py runserver
python manage.py makemigrations accounts
python manage.py migrate
python manage.py check_permissions
python manage.py cities --import=country --force
*python manage.py shell | from cities.models import * Country.objects.all().exclude(name='United States").delete()*
python manage.py cities --import=cities
python manage.py cities --import=postal_code
我猜有问题的行不正确,在 bash 脚本中执行此操作的正确方法是什么?
【问题讨论】:
-
也欢迎任何关于更好方法的建议
-
为了更好地了解管道在 bash 中的工作方式——
foo | bar将foo的标准输出连接到bar的标准输入。因此,您提出的命令将python manage.py shell的输出发送到名为from的命令的输入,其第二个参数cities.models等。 -
你也许可以用另一种方式做到这一点:
printf '%s\n' 'from cities.models import *' 'Country.objects.all().exclude(name="United States").delete()' | python manage.py shell——这样你发送printf命令的输出,该命令将你的脚本生成为输入到manage.py shell命令。