Основываясь на предложении сделать это вручную, я пришел к следующему, используя это рассуждение:
"$@"
синтаксис означает: Развернуть все аргументы до "$1" "$2" ...
- ЭтоКажется, не работает в моем случае, поэтому сделайте это вручную:
CMD=()
for var in "$@"; do
CMD+=( '"'"${var}"'"' )
done
cat > ${FILE} <<EOF
Your command is:
${CMD[@]}
Итак, в основном: Создайте массив строк в кавычках.Затем распечатайте это.Это работает для тестового случая.
Но: Не удается для многих других вещей.Пример: myScript.sh -- echo "Hello \"\$USER\""
, который оставляет кавычки без экранирования.
Таким образом, я заключаю, что эта задача невозможна или, по крайней мере, неосуществима, и предложила бы использовать решение на основе printf
, которое, как представляется, также, как и другие командысправиться с этим (пример: srun/sbatch
на SLURM)