gnovice's & Peter 100's * ответит на ваш вопрос. Однако я решил упомянуть, почему использование оцененных ответов для приложений, где не является конечным пользователем , является ужасной идеей.
Хотя эта функция, безусловно, полезна, как показывает gnovice, она также оценивает системные вызовы!
Enter values for mass: system('echo "hello world" ')
hello world
Это ответ от моей ОС. vec
просто хранит значение возврата из функции. Вы можете делать что угодно, в том числе
Enter values for mass: system('rm -rf /')
, который просто сотрет весь диск, если он работает как суперпользователь. Предоставление пользователям доступа к вашей ОС - это просто плохая и плохая идея, и я упоминаю об этом, потому что я видел несколько научных киосков, где у них есть небольшая программа, написанная на MATLAB для иллюстрации некоторой концепции, и для запроса используется input
ценности от пользователей (случайные люди, прогуливающиеся). Возможно, не все думают как я, поэтому у них до сих пор не было проблем :). Тем не менее, это похоже на SQL-инъекции , и каждый аргумент, который может быть сделан для очистки баз данных, может быть применен и здесь.
В этом случае можно использовать input
с необязательным вторым входным аргументом, например
vec=input('Enter values for mass: ','s');
Сохраняет неоцененную строку в переменной vec
, после чего вы можете проверить наличие вредоносного содержимого перед его оценкой (или разрешить только набор функций и символов в белом списке).
Enter values for mass: system('echo "hello world" ')
>> vec
vec =
system('echo "hello world" ')