Как сохранить аргументы оболочки в файле для последующего использования при сохранении кавычек?
Для ясности: я не хочу передавать аргументы на месте, что можно легко сделать с помощью "$@"
. Но на самом деле нужно , чтобы сохранить их в файле для позже использования.
#!/bin/sh
storeargs() {
: #-)
}
if "$1"
then
# useargs is actuall 'git filter-branch'
useargs "$@"
storeargs "$@"
else
# without args use those from previous invocation
eval useargs $(cat store)
fi
.
$ foo 'a "b"' "c 'd'" '\'' 'd
e'
$ foo # behave as if called with same arguments again
Вопрос, вероятно, сводится к тому, как заключить в кавычки строку, используя общие инструменты в целом (awk, perl, ...). Я бы предпочел решение, которое не делает цитируемую строку нечитаемой. Содержимое store
должно выглядеть более или менее так, как я бы указал в командной строке.
Вопрос осложняется тем фактом, что цитируемые аргументы / строки могут уже содержать любые допустимые (shell) кавычки и / или любые (существенные) пробелы, поэтому без всяких условий ставьте одинарные или двойные кавычки вокруг каждого аргумента. или сохранение одного аргумента в строке не сработает.