在从事项目工作时,我偶然发现了这种奇怪的行为。这是将重现相同问题的演示代码-
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import argparse
parser = argparse.ArgumentParser(description='Random observations')
parser.add_argument('-g', '--get', help='Get n of something')
parser.add_argument('-c','--create', help='Create something')
args = vars(parser.parse_args())
if args['get']:
print(f"Retrieved {args['get']} resources...")
if args['create']:
print(f"Created resource..{args['create']}")
为了简洁起见,我使用chmod +x filename
使脚本可执行。
现在,这变得很奇怪。如果我这样运行脚本-
$ ./so -c "Calling `./so -g 5`"
输出为-
Created resource..Calling Retrieved 5 resources...
为什么字符串中的命令被执行,难道它不应该只是作为字符串输入而作为字符串输出吗?
我做了一些实验,这是我的发现:
命令-
$ ./so -c """Calling `./so -g 5`"""
输出
Created resource..Calling Retrieved 5 resources...
命令-
$./so -c '''Calling `./so -g 5`'''
输出-
Created resource..Calling `./so -g 5`
为什么最后一个不能按预期工作,而其他却不能?
P.S我不知道此问题的必要标签,请随时对其进行编辑。