Как расширить команду в ударе так, чтобы он расширился на основе опций?

Fedora 15 использует systemd. Сначала удостоверьтесь, что Вы выполняете 'графическую' цель путем проверки этого /etc/systemd/system/default.target символьная ссылка на /lib/systemd/system/graphical.target, который является эквивалентом runlevel 5 (и нет multi-user.target, который является эквивалентом runlevel 3).

Затем, удостоверьтесь, что 'prefdm' услуга работает. Проверьте вывод systemctl status prefdm.service. это должно показать, что загрузилось и активный. Если Вы не были в графической цели, это, вероятно, не будет.

Теперь, если у Вас уже был он в графической цели, возможно, что X не запускается из-за некоторой ошибки. Проверьте файлы журнала в/var/log/gdm, посмотрите на файлы с меткой времени прошлого раза, когда Вы загрузились, чтобы видеть, было ли, возможно, что-то повреждено.

2
13.08.2013, 01:59
2 ответа

Вам нужно пространство между [[ и $2.

Для удара [[ не синтаксис, это - встроенная команда (или ключевое слово, чтобы быть точным). Bash выполнится [[ со всеми его параметрами, включая закрытие ]]. Когда у Вас нет пространства между [[ и $2 удар не будет видеть ключевого слова [[, вместо этого это будет видеть эту вещь: [[-b (после того, как расширение $2 кому: -b). Bash затем попытается выполнить строку [[-b как команда и сбой. Посмотрите help [[ для получения дополнительной информации.

По той же причине Вам также нужно пространство перед закрытием ]].

Вот Ваш исправленный код:

git() {
    if [[ $1 == 'checkout' ]] && [[ $2 == '-b' ]]; 
            then echo 'yep!';
    fi;

    command git "$@";
}

См. также ловушки удара и удар FAQ. IMO лучший способ изучить удар, пишущий сценарий... или лучший способ учиться не делать слишком много сценариев удара.

2
27.01.2020, 22:06

Поскольку у Вас нет пространства между [[ и $2, это анализируется неправильно (как [[ непосредственно сопровождаемый расширением $2). Вам нужен пробел между аргументами [[:

[[ $2 == -b ]]
1
27.01.2020, 22:06

Теги

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