【发布时间】:2014-01-21 06:23:00
【问题描述】:
我有一个使用 python os.system() 执行的单行 bash 命令
for FILENAME in mydir/PRE_*; do echo $FILENAME `printf ${FILENAME:0:12}; printf ${FILENAME:23}`; done;
它遍历目录中的所有文件并重命名它们,以从文件名中取出字符 12-23。当我使用服务器登录通过 bash 执行该命令时,该命令运行良好,但是当我使用 web 用户通过 python 执行它时,它会引发错误。
我发现这是因为 web 用户的默认 shell 是 /bin/sh 而不是 /bin/bash。
我可以使用该用户登录并将 shell 更改为 /bin/bash。
所以问题是我可以在不更改用户默认 shell 的情况下强制使用 /bin/bash 执行单行吗?
【问题讨论】:
-
您可以使用纯 Python 完成相同的操作,而无需使用
bash。我建议改为。 -
你是对的,我做了 bash,因为它看起来很简单,有点忘了 python 可以做同样的事情。使用 naitive python 代码更清晰,但仍然值得知道如何强制使用 bash 解释器