При запуске test.sh
Баш скриптАргумент Octave анализирует аргументы, разделенные пробелами, как передать многословный аргумент?
#!/bin/bash +x
./test.m $*
который вызывает исполняемый скрипт test.m
GNU Octave, в одном из следующих способов:
./test.sh my argument
./test.sh "my argument"
./test.sh 'my argument'
argv()
всегда анализирующие эти две строки:
ans =
{
[1,1] = my
[2,1] = argument
}
Есть ли способ получить оба слова в одном аргументе, без дальнейшей обработки Результат? Или иначе, может ли разделительный символ отличаться от пустого?
Интересно, что сам bash действительно имеет значение от первого вызова и двух других. $1
получит оба слова в последнем случае и только «мой» в первом.
Во-вторых, как было бы, если аргументы хранятся в переменной перед посланного в скрипт Octave:
#!/bin/bash +x
a="[email protected]"
./test.m $a
это даст тот же результат, два слова:
ans =
{
[1,1] = my
[2,1] = argument
}
В то время как используя ./test.m "$a"
#!/bin/bash +x
a="[email protected]"
./test.m "$a"
будет иметь последствия передачи одного Тринг, в том числе всех аргументов: ./test.sh "my argument" other
упакует my argument other
вместе:
ans =
{
[1,1] = my argument other
}
@Suever извините, обновляемой ! – nightcod3r