所以我尝试通过 python Fabric 脚本自动设置 arch linux 实例,如下所示:
from fabric.api import run, sudo
def server_setup_communityrepo():
run('echo \'echo "[archlinuxfr]" >> /etc/pacman.conf\' | sudo -s')
run('echo \'echo "Server = http://repo.archlinux.fr/$arch" >> /etc/pacman.conf\' | sudo -s')
run('echo \'echo " " >> /etc/pacman.conf\' | sudo -s')
sudo('pacman -Syy yaourt --noconfirm')
问题出现在第二个run()
由于 $ 符号而调用$arch
。此结构函数在第 2 行失败,因为结构将 $ 后跟字符串识别为配置变量。但我实际上希望 $arch 被理解为文字
echo 'echo "Server = http://repo.archlinux.fr/$arch" >> /etc/pacman.conf'
在 bash shell 中调用。
我如何“摆脱”这种结构怪癖并将 $arch 指定为要写入我的 pacman.conf 文件的文字?
使用带单引号的 echo。这将防止外壳膨胀$arch
.
run('echo \'Server = http://repo.archlinux.fr/$arch\' | sudo -s tee -a /etc/pacman.conf')
这应该相当于
echo 'Server = http://repo.archlinux.fr/$arch' | sudo -s tee -a /etc/pacman.conf
快速测试:
>>> import os
>>> os.system('echo \'Server = /foo/$arch\' ')
Server = /foo/$arch
0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)