Как отмечает Mat , ваш фрагмент скрипта уже верен. Если вы вызываете свой скрипт из оболочки, вам нужно правильно указать аргументы, например
myscript -u "string with white space"
myscript -u 'string with white space'
myscript -u string\ with\ white\ space
myscript -u string' w'ith\ "whi"te" "''space
Требование этих кавычек не является дефектом в вашем скрипте, это способ работы вызывающей оболочки. Все программы, сценарии или другие, получают аргументы в виде списка строк. Кавычки в вызывающей оболочке используются для сортировки этих аргументов в отдельные «слова» (элементы списка). Все вышеперечисленные вызовы (сделанные из оболочки Unix) передают скрипту список из трех строк: $0
- это имя скрипта (myscript
), $1
- это -u
и $2
- строка string with white space
.