我正在尝试将一些shell cmd传递到我的python脚本之一中,以便可以将其运行到主机。但是,当我将它们传递到行中时,由于某种原因,省略了$。如何避免这种情况?
我使用解析器和这样的设置:
parser = argparse.ArgumentParser(description='check size', add_help=True)
parser.add_argument('-c', "--cmd", dest="cmd",type=str, help="Command to run Ex: df -h /boot/|grep -i boot|awk '{print \$4}' 2>/dev/null ")
例如: 这与反斜杠一起工作
python3.4 disk_file_check.py -e env -op chksize -c "df -h /boot/|grep -i boot|awk {'print \$4'} 2>/dev/null"
因为任何人都可以使用此脚本,并且他们应该传递的只是他们要使用的命令。但我希望它像这样:
python3.4 disk_file_check.py -e env -op chksize -c "df -h /boot/|grep -i boot|awk {'print $4'} 2>/dev/null"
但是当我这样做时,字符串变成了:
df -h /boot/|grep -i boot|awk '{print }' 2>/dev/null
您可以看到$减少了,并给了我错误的结果...
argparse中的任何可能的设置都可以做到吗?还是我应该尝试比较方式?谢谢
答案 0 :(得分:0)
谢谢。我认为我不会通过命令行传递此命令,因为shell会扩展它。感谢您指出这一点。