所以我试图通过python结构脚本自动化建立一个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')
由于$arch中的$符号,在第二次run()调用时会出现此问题.此结构函数在第2行中失败,因为$后跟一个字符串被fabric识别为配置变量.但我实际上希望将$arch理解为文字中的字面值
echo’echo“Server = http://repo.archlinux.fr/$arch”>> /etc/pacman.conf’调用bash shell.
最佳答案
使用带单引号的echo.这将阻止shell扩展$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