Я пытаюсь разрешить строки, которые имеют пробелы в них, считаться целыми строками, а не анализироваться. Это то, что я хотел бы, чтобы произошло:Подсчет пробелов в аргументах в KSH?
$ ksh program.ksh "what up"
File 'what up' not found.
И это то, что я получаю:
$ ksh program.ksh "what up"
File 'what' not found.
File 'up' not found.
Это код, который я пытался сделать работу:
wflag=false
cflag=false
while getopts "cw" opt; do
case "$opt" in
c)
cflag=true
;;
w)
wflag=true
;;
/?)
;;
esac
done
Проблема заключается в том, что 1) Я пробую что-то выше, как ksh program.ksh "what up"
, и 2) когда я пробую что-то вроде ksh program.ksh "-w -c"
. Второй - самый запутанный, так как когда я печатаю wflag
и cflag
, они оба верны. Не следует ли обрабатывать здесь "-w -c"
? Кажется, что ядро (это ядро, выполняющее здесь работу?) Анализирует это, хотя это именно то, чего я не хочу; Я хочу, чтобы он рассматривался как строка с пробелом. Я прочитал WordSplitting и ((статья о Аргументах, не позволяла мне публиковать его, хотя)), и думаю Я понимаю. Ясно, что я должен что-то упускать, или вообще не понимаю его: P
Мой инстинкт говорит мне, что что-то происходит с getopts
, который автоматически избавляется от любых пробелов. Я пробовал $(opt)
вместо "$opt"
, а также с фигурными фигурными скобками и/или одинарными кавычками (я уверен, что одиночные кавычки не будут работать, хотя). Увы, нет сигары.
Любая помощь будет принята с благодарностью и благодарит вас за чтение этой стены.
Благодарим вас за такой ясный и полезный ответ. К сожалению, 'getopts' не поддерживает длинные варианты, я думаю, мне, возможно, придется найти другой способ этого. Я попытаюсь, возможно, хранить все аргументы в массиве и обрабатывать их по одному. Спасибо еще раз за помощь! – Fred
Если вы используете ksh93, его встроенный 'getopts' имеет расширения, позволяющие использовать длинные параметры. – jilles
@Alex: Вы должны знать, что @jilles прокомментировал, что в ksh93 'getopts' разрешает длинные варианты. Он не упоминается на официальной странице 'man' (http://www2.research.att.com/sw/download/man/man1/ksh.html), но он задокументирован в' getopts -man'. Однако, ' bloat '. –