Я использую режим отладки в скрипте BASH для отслеживания команд, которые были выполнены скриптом. До сих пор все это работало очень хорошо, но теперь мне нужно запустить команду с некоторыми параметрами, содержащимися в строке, и эта строка содержит кавычки, которые, кажется, вызывают проблемы в режиме отладки.
Вот краткий пример
#!/bin/bash
job_opts='-q long -M5000000 -R"select[mem>5000] rusage[mem=5000]"'
set -x
bsub $job_opts # .... more options for job here
set +x
Этот скрипт генерирует отправки в очереди заданий lsf с помощью команды bsub, но это не должно иметь значения.
На STDERR я вижу этот след:
+ bsub -q long -M5000000 '-R"select[mem>5000]' 'rusage[mem=5000]"'
Job submission rejected.
Команда bsub должна была выглядеть так:
+ bsub -q long -M5000000 -R"select[mem>5000]' 'rusage[mem=5000]"
Итак, моя команда bsub завершилась неудачно, и я также вижу, что это потому, что он не видел ключ -R, возможно, из-за дополнительных одинарных кавычек вокруг всего переключателя.
Я понимаю, что BASH помещает одинарные кавычки вокруг строк в кавычках в режиме отладки, но я не ожидал, что это повлияет на действующую команду, которая, по-видимому, произошла.
Я что-то не так делаю здесь или есть какой-нибудь способ избежать этого дополнительного цитирования в режиме отладки BASH? Просто регистрировать команды таким способом очень удобно, поэтому было бы стыдно, если бы я больше не мог этого делать только из-за этих надоедливых цитат.
Спасибо за вашу помощь!