Как избежать изменения моего использования команды bash во всех моих scipts - PullRequest
0 голосов
/ 29 марта 2020

Итак, у меня есть команда bash, которая имеет следующие параметры: -v -o -T -S -I -e -t -t было изменено на -x, а -T и -e больше не доступны. Как я могу избежать изменения всех сценариев, которые используют эту команду с этими параметрами, которые больше не доступны или изменились?

1 Ответ

0 голосов
/ 29 марта 2020

Вы можете создать оболочку для вашей команды bash и поместить ее в переменную PATH перед другим исполняемым файлом, который изменяется.

Например:

Представление о том, что изменяющаяся команда bash находится в каталоге / c, и это ваш PATH:

PATH=/a:/b:/c

Один из подходов заключается в поместите оболочку с тем же именем в каталог / a (или / b), то есть в PATH перед / c. Итак, допустим, ваш старый скрипт называется old и находится в каталоге / c. Вы можете создать сценарий old в каталоге /a и вызвать его для вызова другого сценария:

COMMAND="/c/old $( sed -e "s:-x::g" -e "s:-T::g"  <<< "$@" )"
$COMMAND

Поэтому идея состоит в том, чтобы манипулировать аргументами команды перед вызовом сценария / c / old. Это потребует небольшой корректировки, если параметры более сложны (например, они могут принимать значение). Существует также вероятность цитирования, маловероятно, что цитаты выживут при таком подходе.

Если вам нужно усложнить ситуацию, вы можете рассматривать getopts как способ лучшего анализа параметров в скрипте / a / old.

Если честно, я не очень доволен этим ответом - он не будет работать в общем случае. Но вы спросили :) ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...