После удаления драйверов nvidia и подобных вещей, таких как bumblebee, возврат к Intel должен быть простым:
$ cd /etc/X11/
$ su -
# Xorg -configure
Что там написано?
Проблема заключается в том, что подстановка вашей команды расширяется до строки с разделителями -из пробелов, и цикл повторяется по всем словам в этой строке. «Слово» — это что-либо, разделенное пробелом, табуляцией или символом новой строки.
Также обратите внимание, что в Bourne -, как и в оболочках, отличных от zsh
, эти слова в дальнейшем подлежат генерации имени файла (, также известному как подстановка ), поэтому символы подстановки (и {
в некоторых оболочках )также будет проблемой в дополнение к пробелу и табуляции.
lssyscfg -r lpar -m "$system" -F name,lpar_env | cut -d, -f 1 | sort |
while IFS= read -r lpar; do
echo "$lpar"
done
Здесь используется цикл while
вместо статического цикла for
. Тело цикла while
выполняется в подоболочке (в bash
), поэтому переменная lpar
не будет существовать после окончания тела цикла. Это не проблема, если вы используете переменную только в теле цикла.
Связанные:Понимание «IFS= чтение -r строки»
Другим решением было бы установить IFS
на новую строку перед циклом (и сбросить его после этого):
oldIFS=$IFS
IFS=$'\n' # assumes bash
set -o noglob
for lpar in $( lssyscfg -r lpar -m "$system" -F name,lpar_env | cut -d, -f 1 | sort )
do
echo "$lpar"
done
set +o noglob
IFS=$oldIFS
Значение по умолчанию $IFS
включает пробелы, поэтому исходный цикл выполняет итерации по неправильным вещам. Я также отключил подстановку имен файлов для цикла, так как в противном случае мы могли бы получить неожиданные результаты, если текст, возвращаемый из lssyscfg
, включает шаблоны подстановок имен файлов, как обсуждалось выше.
Этот последний вариант, ИМХО, довольно неэлегантен и совершенно не подходит для команд, которые выводят более нескольких строк вывода.
Я бы попробовал
for lpar in $(lssyscfg -r lpar -m $system -F name,lpar_env |awk -F, '{printf "\"%s\"",$1}' | sort)
do
echo "$lpar"
done
$( )
как подстановку команды {printf "\"%s\"",$1}
будет цитировать аргумент