Передающие переменные к сценарию удара при определении источника его

Выбор зависит от Ваших целей.

  • Intel имеет лучший драйвер с открытым исходным кодом. Они прикладывают усилия к нему сами. Intel графические решения не является лучшими 3D исполнителями, тем не менее, встраиваемыми только.

  • Nvidia имеет лучший собственный драйвер с большой 3D производительностью, и они предлагают и высокопроизводительные 3D аппаратные средства и встроенные решения. Совершенствование его берет немного внимания при каждом обновлении ядра, даже незначительном. Это не болезненно, на основе моего опыта — просто восстанавливают и переустанавливают. Драйверы с открытым исходным кодом (nouveau) улучшаются и работают хорошо с 2D, но отстают в 3D все же.

  • AMD/ATI имеет большие аппаратные средства, но их драйверы являются меткой и ниже Intel и ниже Nvidia, или или закрытый исходный код с открытым исходным кодом. Необходимо лучше придерживаться более старых хорошо-поддерживаемых-плат, и люди продолжают жаловаться на незначительные незначительные сбои. Их драйвер с открытым исходным кодом разрабатывает быстро, тем не менее, и возможно через год станет достойным соперником в 3D пространстве.

20
07.04.2018, 05:40
3 ответа

Michael Mrozek охватывает большинство проблем, и его меры будут работать, так как Вы используете Bash.

Можно интересоваться тем, что способность получить сценарий с аргументами является bashism. В sh или dash Ваш main.sh ничего не повторит, потому что аргументы полученному сценарию проигнорированы и $1 будет относиться к аргументу main.sh.

Когда Вы получаете сценарий в sh, это - как будто Вы просто копируете и вставили текст полученного сценария в файл, из которого это было получено. Рассмотрите следующее (примечание, я сделал исправление Michael рекомендуемый):

$ bash ./test.sh
A String
$ sh ./test.sh

$ sh ./test.sh "HELLO WORLD"
HELLO WORLD
20
27.01.2020, 19:44
  • 1
    "В sh или тире, Ваш main.sh ничего не повторит, потому что аргументы полученному сценарию проигнорированы и 1$, будет относиться к аргументу main.sh", Это точно, что происходит. Спасибо за ответ. –  Somebody still uses you MS-DOS 20.12.2010, 21:59
  • 2
    я отметил Вас ответ, как принято, потому что реальная проблема не была с ошибками в моем сценарии, но главным образом потому что я приравнял sh с ударом и ударом, делает плохое задание эмуляции sh в этой ситуации. Ваш ответ enlighned я об этой проблеме, спасибо; –  Somebody still uses you MS-DOS 20.12.2010, 22:08

Я вижу три ошибки:

  1. Ваша строка присвоения является неправильной:

    $NAME="a string"
    

    Когда Вы присваиваете переменной, Вы не включаете $; это должно быть:

    NAME="a string"
    
  2. Вы отсутствуете then; условная строка должна быть:

    if [ -f $HOME/install.sh ]; then
    
  3. Вы не заключаете в кавычки $NAME, даже при том, что это имеет пробелы. Исходная строка должна быть:

    . $HOME/install.sh "$NAME"
    
16
27.01.2020, 19:44
  • 1
    У Него также есть несколько других ошибок, но я не думаю, что это - обязательно источник проблемы, которую он поднимает. –  Steven D 20.12.2010, 20:55
  • 2
    @Steven Вы правы, была пара больше, я не упоминал; это работает на меня с мерами, я перечислил теперь –  Michael Mrozek♦ 20.12.2010, 21:00
  • 3
    @Steven, Когда я бросал вместе сценарий для попытки его, я сократил его до [ -f $HOME/install.sh ] && . $HOME/install.sh $NAME; Я не должен, вероятно, делать подобных вещей, когда я ищу ошибки –  Michael Mrozek♦ 20.12.2010, 21:01
  • 4
    , Это похоже на другую проблему, я думал, был там, на самом деле не проблема, так как он конкретно упоминает Bash. –  Steven D 20.12.2010, 21:05

просто установите ваши параметры перед поиском скрипта!

main.sh

#!/bin/bash
NAME=${*:-"a string"}
if [[ -f install.sh ]];
then
    set -- $NAME ;
    . install.sh ;
fi
exit;

install.sh

#!/bin/bash
echo  " i am sourced by [ ${0##*/} ]";
echo  " with [ $@ ] as parametr(s) ";
exit;

test

u@h$ ./main.sh some args
 i am sourced by [ main.sh ]
 with [ some args ] as parametr(s) 
u@h$
5
27.01.2020, 19:44

Теги

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