Esta é uma questão sobre como o Bash lida com agrupamento de palavras e expansão de variáveis. Eu demonstrarei a questão com um exemplo muito específico:
bash$ git log --format=fuller --date=format:"%Y-%m-%d T%H" # This works.
# Sample output:
commit aba22155684
Author: SerMetAla
AuthorDate: 2018-04-12 T23
Commit: SerMetAla
CommitDate: 2018-04-12 T23
Here is the commit message.
Eu gostaria que isso funcionasse:
bash$ git log "$myformat" # It should print the same stuff.
Eu não sei como fazer isso acontecer com apenas uma variável Bash. Aqui está um exemplo de trabalho com duas variáveis:
# Define the two variables:
bash$ mypref="--format=fuller"
bash$ mydate="--date=format:%Y-%m-%d T%H" # Note: No " after the colon.
# Now use it:
bash$ git log "$mypref" "$mydate" # It works.
O problema é este: como posso fazer isso funcionar com apenas uma variável Bash? É possível?
O problema principal:
git log --format=fuller --date=format:"%Y-%m-%d T%H"
| ^ This space is inside one argument.
|
^ This space separates two arguments.
Eu gostaria de usar uma variável de string normal. Eu não quero usar uma variável de matriz, eu não quero usar $'...'
, eu não quero usar uma função, eu não quero usar um alias. Quando a string é imutável, e quando não está no início do comando, parece que deveria ser uma variável de Bash.
Eu poderia facilmente resolver isso com uma função de uma maneira que seja bastante legível. Eu poderia resolvê-lo com outros truques de Bash de uma forma que seria horrível. Eu quero usar uma variável de string.