Я случайно наткнулся на это странное поведение, работая над проектом. Вот демонстрационный код, который будет воспроизводить ту же проблему -
#!/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 Я не знаю необходимых тегов для этого вопроса, пожалуйста, не стесняйтесь редактировать его.