AFIK, нет никаких ограничений на то, какие символы вы можете передавать в качестве опций (за исключением, возможно, символа NUL). Я не знаю, что вы подразумеваете под особыми символами, но будьте осторожны с тем, что делает вызывающая оболочка с вводом, до того, как getopt
сможет его увидеть, и как вы будете использовать значение после этого , Например, когда вы делаете в своем коде
--SPPWD=I+RFzwpXm13Jn==@k2B0R*@7Xw8e5@.a
, это небезопасно, потому что оболочка будет пытаться расширить глобальный символ *
. В - по общему признанию маловероятном - случае, когда существует имя файла, совпадающее с этой строкой, ваша программа увидит это расширенное имя файла вместо звездочки. Следовательно, вам лучше написать это как
--SPPWD="I+RFzwpXm13Jn==@k2B0R*@7Xw8e5@.a"
или
"--SPPWD=I+RFzwpXm13Jn==@k2B0R*@7Xw8e5@.a"
То же самое относится к использованию проанализированных опций. Когда вы делаете, как в вашем коде, расширение
echo ++ PWD: $SPPWD
может иметь место подстановки для содержимого SPPWD
, и вам лучше написать
echo "++ PWD: $SPPWD"
Но это общее принцип с bash -программированием и не имеет отношения к getopt.