如果我在字符串中传递$作为输入参数,则缺少Python参数

时间:2019-05-31 18:57:25

标签: python python-3.x python-2.7 argparse

我正在尝试将一些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中的任何可能的设置都可以做到吗?还是我应该尝试比较方式?谢谢

1 个答案:

答案 0 :(得分:0)

谢谢。我认为我不会通过命令行传递此命令,因为shell会扩展它。感谢您指出这一点。