как я могу вызвать скрипт с пробелами в переменной в zsh?

Пакетnvidia-cuda-toolkitпредставляет собой программное обеспечение non-free, отредактируйте свой /etc/apt/sources.list, добавив компонент non-free:

.

apt edit-sources

Тогда редактируйте исходники, есть пример:

deb http://deb.debian.org/debian stretch main contrib non-free

сохранить и запустить:

apt update
apt install nvidia-cuda-toolkit 

Компонент

main consists of DFSG-compliant packages, which do not rely on software outside this area to operate. These are the only packages considered part of the Debian distribution.

contrib packages contain DFSG-compliant software, but have dependencies not in main (possibly packaged for Debian in non-free).

non-free contains software that does not comply with the DFSG.

0
05.07.2019, 12:51
2 ответа

Если вы хотите, чтобы переменная расширялась до нескольких аргументов, используйте массив:

var=(ls -l)
$var

Но для хранения кода наиболее очевидным типом хранения является функция:

myfunction() ls -l

Или:

myfunction() ls -l "$@"

чтобы эта функция принимала дополнительные аргументы для передачи в ls.

Тот факт, что bash, как и большинство других оболочек типа Bourne -, разбивает переменные без кавычек при расширении, является ошибкой IMO. См. , к каким проблемам это приводит . Но если вам нужно такое поведение, вы можете установить опцию shwordsplit. Вы также можете добавить опцию globsubstдля восстановления другой ошибки , найденной в bashи других Bourne -подобных оболочках, где расширение переменной также подвергается подстановке (или расширению имени пути ). Или сделайте полный шебанг с emulate shили emulate ksh(, но потеряйте еще несколько функций zsh ).

Не заходя туда, вы также можете указать zshявно разделить переменную:

var='ls -l'
$=var # split on $IFS like the $var of bash/sh
${(s: :)var} # split on spaces only regardless of the value of $IFS
var='*.txt'
echo $~var # do pathname expansion like the $var of bash/sh
var='ls -l *.txt'
$=~var # do both word splitting and filename generation
7
28.01.2020, 02:14

Если переменная уже определена как строка, вы можете использовать

${=t}

Флаг =указывает zsh использовать разбиение на слова при раскрытии переменной.

1
01.10.2021, 17:39

Теги

Похожие вопросы