Помогите с сценарием Bash

Для конфигурации Ubuntu 16.04 для приветствия берутся из файлов конфигурации в следующей иерархии:

/usr/share/lightdm/lightdm.conf.d/*.conf / etc / lightdm / lightdm. conf.d / *. conf /etc/lightdm/lightdm.conf

Место для добавления изменений конфигурации является вторым в списке, при условии, что в последнем файле списка нет ничего, чтобы переопределить значения вы хотите изменить.

Итак, создаем файл /etc/lightdm/lightdm.conf.d/50-myconfig.conf и вставляем его

[Seat:*]
greeter-hide-users=false
greeter-show-manual-login=true
allow-guest=false
Первые швы входа список пользователей входа. Вторая запись позволяет вводить пользователя вручную. Третий вход отключает гостевую учетную запись

ПРИМЕЧАНИЕ. Для версий Ubuntu до /etc/lightdm/lightdm.conf.d/50-myconfig. conf замените [Seat: *] на [SeatDefaults]

Когда изменения были сделаны, перезапустите службу lightdm, чтобы применить изменения.

sudo service lightdm restart

или [ ! d19]

sudo systemctl restart lightdm.service

Для получения дополнительной информации см .: Ubuntu LightDM Wiki

2
задан 28 June 2012 в 00:57

39 ответов

if [ "$(which gimp)" != ""]

] должен быть последним аргументом команды [, и это должен быть отдельный аргумент, поэтому перед ним должен быть пробел. См. Bash Pitfall 10 .

Но не используйте which. Это нестандартная внешняя команда, которая ищет файл в PATH. Он ведет себя по-разному в разных системах, и вы не можете полагаться на полезный выход или состояние выхода. Оболочка уже предоставляет более эффективные способы проверки, существует ли команда и будет ли она работать согласованно в любой системе, поэтому лучше изучите ее. См. Bash FAQ 81 . Однако в этом случае вам не нужно проверять, существует ли gimp, просто запустите gimp -version или запросите dpkg относительно версии пакета gimp (см. dpkg-query (1) ), уже скажу вам, существует ли он или нет.

if [ "$(gimp -version)" != 2.8 ]

AndAC уже дал решение для этого, но я предоставлю другое; сравнивая номера версий. dpkg предоставляет возможность сравнить две версии, а именно dpkg --compare-versions ver1 op ver2. Например. dpkg --compare-versions 2.6.12 '<' 2.8.0-1ubuntu0ppa6~precise вернет true, поскольку версия 2.6.12 старше, чем 2.8.0-1ubuntu0ppa6 ~ точная. См. dpkg (1) .

Все скобки ({ и }) в этом скрипте бессмысленны, они не имеют смысла, так что вы можете также удалить их .

Собираем все это вместе:

#!/usr/bin/env bash

# Query dpkg to get the version of the currently installed gimp package.
# The command returns false if the package is not installed.
if version=$(dpkg-query -W -f='${Version}' gimp 2>/dev/null); then 

    # Check if it's older than 2.8
    if dpkg --compare-versions "$version" '<' 2.8; then
        apt-get remove gimp || exit
    else
        printf 'Looks good.\n'
        exit
    fi
fi

add-apt-repository ppa:otto-kesselgulasch/gimp &&
apt-get update &&
apt-get install gimp
6
ответ дан 25 July 2018 в 18:17
if [ "$(which gimp)" != ""]

] должен быть последним аргументом команды [, и это должен быть отдельный аргумент, поэтому перед ним должен быть пробел. См. Bash Pitfall 10 .

Но не используйте which. Это нестандартная внешняя команда, которая ищет файл в PATH. Он ведет себя по-разному в разных системах, и вы не можете полагаться на полезный выход или состояние выхода. Оболочка уже предоставляет более эффективные способы проверки, существует ли команда и будет ли она работать согласованно в любой системе, поэтому лучше изучите ее. См. Bash FAQ 81 . Однако в этом случае вам не нужно проверять, существует ли gimp, просто запустите gimp -version или запросите dpkg относительно версии пакета gimp (см. dpkg-query (1) ), уже скажу вам, существует ли он или нет.

if [ "$(gimp -version)" != 2.8 ]

AndAC уже дал решение для этого, но я предоставлю другое; сравнивая номера версий. dpkg предоставляет возможность сравнить две версии, а именно dpkg --compare-versions ver1 op ver2. Например. dpkg --compare-versions 2.6.12 '<' 2.8.0-1ubuntu0ppa6~precise вернет true, поскольку версия 2.6.12 старше, чем 2.8.0-1ubuntu0ppa6 ~ точная. См. dpkg (1) .

Все скобки ({ и }) в этом скрипте бессмысленны, они не имеют смысла, так что вы можете также удалить их .

Собираем все это вместе:

#!/usr/bin/env bash

# Query dpkg to get the version of the currently installed gimp package.
# The command returns false if the package is not installed.
if version=$(dpkg-query -W -f='${Version}' gimp 2>/dev/null); then 

    # Check if it's older than 2.8
    if dpkg --compare-versions "$version" '<' 2.8; then
        apt-get remove gimp || exit
    else
        printf 'Looks good.\n'
        exit
    fi
fi

add-apt-repository ppa:otto-kesselgulasch/gimp &&
apt-get update &&
apt-get install gimp
6
ответ дан 2 August 2018 в 00:30
if [ "$(which gimp)" != ""]

] должен быть последним аргументом команды [, и это должен быть отдельный аргумент, поэтому перед ним должен быть пробел. См. Bash Pitfall 10 .

Но не используйте which. Это нестандартная внешняя команда, которая ищет файл в PATH. Он ведет себя по-разному в разных системах, и вы не можете полагаться на полезный выход или состояние выхода. Оболочка уже предоставляет более эффективные способы проверки, существует ли команда и будет ли она работать согласованно в любой системе, поэтому лучше изучите ее. См. Bash FAQ 81 . Однако в этом случае вам не нужно проверять, существует ли gimp, просто запустите gimp -version или запросите dpkg относительно версии пакета gimp (см. dpkg-query (1) ), уже скажу вам, существует ли он или нет.

if [ "$(gimp -version)" != 2.8 ]

AndAC уже дал решение для этого, но я предоставлю другое; сравнивая номера версий. dpkg предоставляет возможность сравнить две версии, а именно dpkg --compare-versions ver1 op ver2. Например. dpkg --compare-versions 2.6.12 '<' 2.8.0-1ubuntu0ppa6~precise вернет true, поскольку версия 2.6.12 старше, чем 2.8.0-1ubuntu0ppa6 ~ точная. См. dpkg (1) .

Все скобки ({ и }) в этом скрипте бессмысленны, они не имеют смысла, так что вы можете также удалить их .

Собираем все это вместе:

#!/usr/bin/env bash

# Query dpkg to get the version of the currently installed gimp package.
# The command returns false if the package is not installed.
if version=$(dpkg-query -W -f='${Version}' gimp 2>/dev/null); then 

    # Check if it's older than 2.8
    if dpkg --compare-versions "$version" '<' 2.8; then
        apt-get remove gimp || exit
    else
        printf 'Looks good.\n'
        exit
    fi
fi

add-apt-repository ppa:otto-kesselgulasch/gimp &&
apt-get update &&
apt-get install gimp
6
ответ дан 4 August 2018 в 15:59
if [ "$(which gimp)" != ""]

] должен быть последним аргументом команды [, и это должен быть отдельный аргумент, поэтому перед ним должен быть пробел. См. Bash Pitfall 10 .

Но не используйте which. Это нестандартная внешняя команда, которая ищет файл в PATH. Он ведет себя по-разному в разных системах, и вы не можете полагаться на полезный выход или состояние выхода. Оболочка уже предоставляет более эффективные способы проверки, существует ли команда и будет ли она работать согласованно в любой системе, поэтому лучше изучите ее. См. Bash FAQ 81 . Однако в этом случае вам не нужно проверять, существует ли gimp, просто запустите gimp -version или запросите dpkg относительно версии пакета gimp (см. dpkg-query (1) ), уже скажу вам, существует ли он или нет.

if [ "$(gimp -version)" != 2.8 ]

AndAC уже дал решение для этого, но я предоставлю другое; сравнивая номера версий. dpkg предоставляет возможность сравнить две версии, а именно dpkg --compare-versions ver1 op ver2. Например. dpkg --compare-versions 2.6.12 '<' 2.8.0-1ubuntu0ppa6~precise вернет true, поскольку версия 2.6.12 старше, чем 2.8.0-1ubuntu0ppa6 ~ точная. См. dpkg (1) .

Все скобки ({ и }) в этом скрипте бессмысленны, они не имеют смысла, так что вы можете также удалить их .

Собираем все это вместе:

#!/usr/bin/env bash

# Query dpkg to get the version of the currently installed gimp package.
# The command returns false if the package is not installed.
if version=$(dpkg-query -W -f='${Version}' gimp 2>/dev/null); then 

    # Check if it's older than 2.8
    if dpkg --compare-versions "$version" '<' 2.8; then
        apt-get remove gimp || exit
    else
        printf 'Looks good.\n'
        exit
    fi
fi

add-apt-repository ppa:otto-kesselgulasch/gimp &&
apt-get update &&
apt-get install gimp
6
ответ дан 6 August 2018 в 00:37
if [ "$(which gimp)" != ""]

] должен быть последним аргументом команды [, и это должен быть отдельный аргумент, поэтому перед ним должен быть пробел. См. Bash Pitfall 10 .

Но не используйте which. Это нестандартная внешняя команда, которая ищет файл в PATH. Он ведет себя по-разному в разных системах, и вы не можете полагаться на полезный выход или состояние выхода. Оболочка уже предоставляет более эффективные способы проверки, существует ли команда и будет ли она работать согласованно в любой системе, поэтому лучше изучите ее. См. Bash FAQ 81 . Однако в этом случае вам не нужно проверять, существует ли gimp, просто запустите gimp -version или запросите dpkg относительно версии пакета gimp (см. dpkg-query (1) ), уже скажу вам, существует ли он или нет.

if [ "$(gimp -version)" != 2.8 ]

AndAC уже дал решение для этого, но я предоставлю другое; сравнивая номера версий. dpkg предоставляет возможность сравнить две версии, а именно dpkg --compare-versions ver1 op ver2. Например. dpkg --compare-versions 2.6.12 '<' 2.8.0-1ubuntu0ppa6~precise вернет true, поскольку версия 2.6.12 старше, чем 2.8.0-1ubuntu0ppa6 ~ точная. См. dpkg (1) .

Все скобки ({ и }) в этом скрипте бессмысленны, они не имеют смысла, так что вы можете также удалить их .

Собираем все это вместе:

#!/usr/bin/env bash

# Query dpkg to get the version of the currently installed gimp package.
# The command returns false if the package is not installed.
if version=$(dpkg-query -W -f='${Version}' gimp 2>/dev/null); then 

    # Check if it's older than 2.8
    if dpkg --compare-versions "$version" '<' 2.8; then
        apt-get remove gimp || exit
    else
        printf 'Looks good.\n'
        exit
    fi
fi

add-apt-repository ppa:otto-kesselgulasch/gimp &&
apt-get update &&
apt-get install gimp
6
ответ дан 7 August 2018 в 18:03
if [ "$(which gimp)" != ""]

] должен быть последним аргументом команды [, и это должен быть отдельный аргумент, поэтому перед ним должен быть пробел. См. Bash Pitfall 10 .

Но не используйте which. Это нестандартная внешняя команда, которая ищет файл в PATH. Он ведет себя по-разному в разных системах, и вы не можете полагаться на полезный выход или состояние выхода. Оболочка уже предоставляет более эффективные способы проверки, существует ли команда и будет ли она работать согласованно в любой системе, поэтому лучше изучите ее. См. Bash FAQ 81 . Однако в этом случае вам не нужно проверять, существует ли gimp, просто запустите gimp -version или запросите dpkg относительно версии пакета gimp (см. dpkg-query (1) ), уже скажу вам, существует ли он или нет.

if [ "$(gimp -version)" != 2.8 ]

AndAC уже дал решение для этого, но я предоставлю другое; сравнивая номера версий. dpkg предоставляет возможность сравнить две версии, а именно dpkg --compare-versions ver1 op ver2. Например. dpkg --compare-versions 2.6.12 '<' 2.8.0-1ubuntu0ppa6~precise вернет true, поскольку версия 2.6.12 старше, чем 2.8.0-1ubuntu0ppa6 ~ точная. См. dpkg (1) .

Все скобки ({ и }) в этом скрипте бессмысленны, они не имеют смысла, так что вы можете также удалить их .

Собираем все это вместе:

#!/usr/bin/env bash

# Query dpkg to get the version of the currently installed gimp package.
# The command returns false if the package is not installed.
if version=$(dpkg-query -W -f='${Version}' gimp 2>/dev/null); then 

    # Check if it's older than 2.8
    if dpkg --compare-versions "$version" '<' 2.8; then
        apt-get remove gimp || exit
    else
        printf 'Looks good.\n'
        exit
    fi
fi

add-apt-repository ppa:otto-kesselgulasch/gimp &&
apt-get update &&
apt-get install gimp
6
ответ дан 10 August 2018 в 06:51
if [ "$(which gimp)" != ""]

] должен быть последним аргументом команды [, и это должен быть отдельный аргумент, поэтому перед ним должен быть пробел. См. Bash Pitfall 10 .

Но не используйте which. Это нестандартная внешняя команда, которая ищет файл в PATH. Он ведет себя по-разному в разных системах, и вы не можете полагаться на полезный выход или состояние выхода. Оболочка уже предоставляет более эффективные способы проверки, существует ли команда и будет ли она работать согласованно в любой системе, поэтому лучше изучите ее. См. Bash FAQ 81 . Однако в этом случае вам не нужно проверять, существует ли gimp, просто запустите gimp -version или запросите dpkg относительно версии пакета gimp (см. dpkg-query (1) ), уже скажу вам, существует ли он или нет.

if [ "$(gimp -version)" != 2.8 ]

AndAC уже дал решение для этого, но я предоставлю другое; сравнивая номера версий. dpkg предоставляет возможность сравнить две версии, а именно dpkg --compare-versions ver1 op ver2. Например. dpkg --compare-versions 2.6.12 '<' 2.8.0-1ubuntu0ppa6~precise вернет true, поскольку версия 2.6.12 старше, чем 2.8.0-1ubuntu0ppa6 ~ точная. См. dpkg (1) .

Все скобки ({ и }) в этом скрипте бессмысленны, они не имеют смысла, так что вы можете также удалить их .

Собираем все это вместе:

#!/usr/bin/env bash

# Query dpkg to get the version of the currently installed gimp package.
# The command returns false if the package is not installed.
if version=$(dpkg-query -W -f='${Version}' gimp 2>/dev/null); then 

    # Check if it's older than 2.8
    if dpkg --compare-versions "$version" '<' 2.8; then
        apt-get remove gimp || exit
    else
        printf 'Looks good.\n'
        exit
    fi
fi

add-apt-repository ppa:otto-kesselgulasch/gimp &&
apt-get update &&
apt-get install gimp
6
ответ дан 15 August 2018 в 18:47

Вместо того, чтобы записывать вывод и видеть, что он пуст

if [ "$(which gimp)" != ""] 

, используйте это, что просто рассматривает статус выхода команды (0 = успех)

if which gimp &>/dev/null
then 

Ваше использование скобок для группировки команд не требуется, но не повредит.

1
ответ дан 25 May 2018 в 09:36

Первая строка, «которая» имеет низкий регистр:

if [ "$(which gimp)" != ""]

Здесь:

if [ "$(gimp -version)" != 2.8 ]

Вы можете использовать:

gimp_ver=$(gimp -version)
gimp_ver=$(echo ${gimp_ver##* } | cut -f1-2 -d'.')
if [ $gimp_ver != "2.8" ]
0
ответ дан 25 May 2018 в 09:36

Поскольку нет никакой информации о том, что пойдет не так, это трудно помочь. Но, по крайней мере, вы должны исправить неверное произношение «который», вы написали его с капиталом W, а bash чувствителен к регистру.

0
ответ дан 25 May 2018 в 09:36

Несколько технических замечаний и проблем, с которыми вы столкнетесь:

Все, что сказал @AndAC. add-apt-repository не может быть установлена ​​в системе каждого пользователя. На чистых установках, которые я видел, 12.04 включает его по умолчанию, но более старые - нет. Вам может потребоваться остановка в начале выполнения if [ "$(which add-apt-repository)" != ""], а в тех случаях, когда она не существует, принудительно установите родительский пакет в качестве зависимости, прежде чем продолжить в скрипте (примечание: опустите sudo, если вы возьмете третий маркер в этот список как часть вашего сценария): sudo apt-get install python-software-properties Вы можете использовать описанные здесь методы, чтобы весь ваш скрипт выполнялся как суперпользователь. И я говорю это, потому что в некоторых системах существует sudoers политика, требующая пароль для каждого экземпляра использования sudo. У меня есть несколько сценариев, которые в этом нуждаются, и добавив информацию в ответ, который я связал, вы можете частично избежать этой проблемы, потребовав, чтобы вы запускали скрипт как суперпользователь (через sudo).
0
ответ дан 25 May 2018 в 09:36

Так как нет информации о том, что идет не так, трудно помочь. Но, по крайней мере, вы должны исправить неправильное написание слова "который", вы написали его заглавной буквой W, а bash чувствителен к регистру.

0
ответ дан 25 July 2018 в 18:17

Вместо того, чтобы захватывать вывод и видеть, пусто ли оно

if [ "$(which gimp)" != ""] 

, используйте это, которое просто учитывает состояние выхода команды (0 = успех)

if which gimp &>/dev/null
then 

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

1
ответ дан 25 July 2018 в 18:17

Несколько технических замечаний и проблем, с которыми вы столкнетесь:

  1. Все, что сказал @AndAC.
  2. add-apt-repository может не быть установленным в системе каждого. На чистых установках, которые я видел, 12.04 включает его по умолчанию, но на старых нет. Возможно, вы захотите сделать остановку в начале
    if [ "$(which add-apt-repository)" != ""]
    , а в тех случаях, когда он не существует, принудительно установите родительский пакет в качестве зависимости, прежде чем продолжить в сценарии (примечание: опустите sudo, если вы берете третий пункт в этот список является частью вашего скрипта): sudo apt-get install python-software-properties
  3. Возможно, вы захотите использовать методы, описанные здесь, чтобы весь ваш скрипт работал как суперпользователь . И я говорю это потому, что в некоторых системах существует политика sudoers, требующая пароль для каждого экземпляра использования sudo. У меня есть несколько скриптов, которые нуждались в этом, и, добавив информацию в ответ, который я связал, вы можете частично избежать этой проблемы, требуя, чтобы вы запускали скрипт как суперпользователь (через sudo).
0
ответ дан 25 July 2018 в 18:17

Первая строка, «which» в нижнем регистре:

if [ "$(which gimp)" != ""]

Здесь:

if [ "$(gimp -version)" != 2.8 ]

Вы можете использовать:

gimp_ver=$(gimp -version)
gimp_ver=$(echo ${gimp_ver##* } | cut -f1-2 -d'.')
if [ $gimp_ver != "2.8" ]
0
ответ дан 25 July 2018 в 18:17

Так как нет информации о том, что идет не так, трудно помочь. Но, по крайней мере, вы должны исправить неправильное написание слова "который", вы написали его заглавной буквой W, а bash чувствителен к регистру.

0
ответ дан 2 August 2018 в 00:30

Вместо того, чтобы захватывать вывод и видеть, пусто ли оно

if [ "$(which gimp)" != ""] 

, используйте это, которое просто учитывает состояние выхода команды (0 = успех)

if which gimp &>/dev/null
then 

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

1
ответ дан 2 August 2018 в 00:30

Несколько технических замечаний и проблем, с которыми вы столкнетесь:

  1. Все, что сказал @AndAC.
  2. add-apt-repository может не быть установленным в системе каждого. На чистых установках, которые я видел, 12.04 включает его по умолчанию, но на старых нет. Возможно, вы захотите сделать остановку в начале
    if [ "$(which add-apt-repository)" != ""]
    , а в тех случаях, когда он не существует, принудительно установите родительский пакет в качестве зависимости, прежде чем продолжить в сценарии (примечание: опустите sudo, если вы берете третий пункт в этот список является частью вашего скрипта): sudo apt-get install python-software-properties
  3. Возможно, вы захотите использовать методы, описанные здесь, чтобы весь ваш скрипт работал как суперпользователь . И я говорю это потому, что в некоторых системах существует политика sudoers, требующая пароль для каждого экземпляра использования sudo. У меня есть несколько скриптов, которые нуждались в этом, и, добавив информацию в ответ, который я связал, вы можете частично избежать этой проблемы, требуя, чтобы вы запускали скрипт как суперпользователь (через sudo).
0
ответ дан 2 August 2018 в 00:30

Первая строка, «which» в нижнем регистре:

if [ "$(which gimp)" != ""]

Здесь:

if [ "$(gimp -version)" != 2.8 ]

Можно использовать:

gimp_ver=$(gimp -version)
gimp_ver=$(echo ${gimp_ver##* } | cut -f1-2 -d'.')
if [ $gimp_ver != "2.8" ]
0
ответ дан 2 August 2018 в 00:30

Так как нет информации о том, что идет не так, трудно помочь. Но, по крайней мере, вы должны исправить неправильное написание слова "который", вы написали его заглавной буквой W, а bash чувствителен к регистру.

0
ответ дан 4 August 2018 в 15:59

Вместо того, чтобы захватывать вывод и видеть, пусто ли оно

if [ "$(which gimp)" != ""] 

, используйте это, которое просто учитывает состояние выхода команды (0 = успех)

if which gimp &>/dev/null
then 

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

1
ответ дан 4 August 2018 в 15:59

Несколько технических замечаний и проблем, с которыми вы столкнетесь:

  1. Все, что сказал @AndAC.
  2. add-apt-repository может не быть установленным в системе каждого. На чистых установках, которые я видел, 12.04 включает его по умолчанию, но на старых нет. Возможно, вы захотите сделать остановку в начале
    if [ "$(which add-apt-repository)" != ""]
    , а в тех случаях, когда он не существует, принудительно установите родительский пакет в качестве зависимости, прежде чем продолжить в сценарии (примечание: опустите sudo, если вы берете третий пункт в этот список является частью вашего скрипта): sudo apt-get install python-software-properties
  3. Возможно, вы захотите использовать методы, описанные здесь, чтобы весь ваш скрипт работал как суперпользователь . И я говорю это потому, что в некоторых системах существует политика sudoers, требующая пароль для каждого экземпляра использования sudo. У меня есть несколько скриптов, которые нуждались в этом, и, добавив информацию в ответ, который я связал, вы можете частично избежать этой проблемы, требуя, чтобы вы запускали скрипт как суперпользователь (через sudo).
0
ответ дан 4 August 2018 в 15:59

Первая строка, «which» в нижнем регистре:

if [ "$(which gimp)" != ""]

Здесь:

if [ "$(gimp -version)" != 2.8 ]

Вы можете использовать:

gimp_ver=$(gimp -version)
gimp_ver=$(echo ${gimp_ver##* } | cut -f1-2 -d'.')
if [ $gimp_ver != "2.8" ]
0
ответ дан 4 August 2018 в 15:59

Вместо того, чтобы захватывать вывод и видеть, пусто ли оно

if [ "$(which gimp)" != ""] 

, используйте это, которое просто учитывает состояние выхода команды (0 = успех)

if which gimp &>/dev/null
then 

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

1
ответ дан 6 August 2018 в 00:37

Так как нет информации о том, что идет не так, трудно помочь. Но, по крайней мере, вы должны исправить неправильное написание слова "который", вы написали его заглавной буквой W, а bash чувствителен к регистру.

0
ответ дан 6 August 2018 в 00:37

Несколько технических замечаний и проблем, с которыми вы столкнетесь:

  1. Все, что сказал @AndAC.
  2. add-apt-repository может не быть установленным в системе каждого. На чистых установках, которые я видел, 12.04 включает его по умолчанию, но на старых нет. Возможно, вы захотите сделать остановку в начале
    if [ "$(which add-apt-repository)" != ""]
    , а в тех случаях, когда он не существует, принудительно установите родительский пакет в качестве зависимости, прежде чем продолжить в сценарии (примечание: опустите sudo, если вы берете третий пункт в этот список является частью вашего скрипта): sudo apt-get install python-software-properties
  3. Возможно, вы захотите использовать методы, описанные здесь, чтобы весь ваш скрипт работал как суперпользователь . И я говорю это потому, что в некоторых системах существует политика sudoers, требующая пароль для каждого экземпляра использования sudo. У меня есть несколько скриптов, которые нуждались в этом, и, добавив информацию в ответ, который я связал, вы можете частично избежать этой проблемы, требуя, чтобы вы запускали скрипт как суперпользователь (через sudo).
0
ответ дан 6 August 2018 в 00:37

Первая строка, «which» в нижнем регистре:

if [ "$(which gimp)" != ""]

Здесь:

if [ "$(gimp -version)" != 2.8 ]

Вы можете использовать:

gimp_ver=$(gimp -version)
gimp_ver=$(echo ${gimp_ver##* } | cut -f1-2 -d'.')
if [ $gimp_ver != "2.8" ]
0
ответ дан 6 August 2018 в 00:37

Так как нет информации о том, что идет не так, трудно помочь. Но, по крайней мере, вы должны исправить неправильное написание слова "который", вы написали его заглавной буквой W, а bash чувствителен к регистру.

0
ответ дан 7 August 2018 в 18:03

Вместо того, чтобы захватывать вывод и видеть, пусто ли оно

if [ "$(which gimp)" != ""] 

, используйте это, которое просто учитывает состояние выхода команды (0 = успех)

if which gimp &>/dev/null
then 

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

1
ответ дан 7 August 2018 в 18:03

Первая строка, «which» в нижнем регистре:

if [ "$(which gimp)" != ""]

Здесь:

if [ "$(gimp -version)" != 2.8 ]

Можно использовать:

gimp_ver=$(gimp -version)
gimp_ver=$(echo ${gimp_ver##* } | cut -f1-2 -d'.')
if [ $gimp_ver != "2.8" ]
0
ответ дан 7 August 2018 в 18:03

Другие вопросы по тегам:

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