bash - возврат и печать

Как Джефф М намекнул, вы можете сделать это с помощью NetworkManager, и мне очень повезло сделать это.

Создайте файл в /etc/NetworkManager/dispatcher.d/ с именем 50-ethtool-autoneg-off и поместите следующее содержимое в этом. Обратите внимание, что вы можете изменить eth0 на eth*, если вы хотите отключить любое эт-устройство, вы также можете добавить eth*|en*, если у вас есть система, использующая более новые «предсказуемые имена ядер».

#!/bin/sh
myname=${0##*/}
log() { logger -p user.info -t "${myname}[$$]" "$*"; }
IFACE=$1
ACTION=$2

case ${IFACE} in
    eth0)
        case ${ACTION} in
            up)
                log "Disabling auto-negotation on $IFACE"
                ethtool -s $IFACE autoneg off speed 100 duplex full
                ;;
        esac
        ;;
esac

В примерах, которые я видел, вам нужны shebang #!/bin/sh или #!/bin/bash, и упомянутые им разрешения определенно важны. Он должен быть как минимум для чтения / выполнения для root, а доступный для записи облегчает обновление без необходимости изменения разрешений или принудительного сохранения вашего редактора.

sudo chmod 0744 /etc/NetworkManager/dispatcher.d/50-ethtool-autoneg-off

Если у вас есть какие-либо проблемы с этим, дайте мне знать и я буду экспериментировать, но в настоящее время я использую аналогичный метод для изменения интерфейса с speed 1000 до speed 100 из-за нестабильности со скоростью по умолчанию.

0
задан 12 March 2018 в 19:01

6 ответов

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

echo "$1" >&2
3
ответ дан 22 May 2018 в 12:37

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

echo "$1" >&2
3
ответ дан 17 July 2018 в 19:01

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

echo "$1" >&2
3
ответ дан 23 July 2018 в 19:48

Return

Значение return сохраняется в $? после каждого вызова команды / функции. Попробуйте это, чтобы получить к нему доступ:

function add_nos {
    echo "$1"
    echo $(($1 + 20))
    return 1
}

result=`add_nos $1`
retval=$?  # this is the "return" value of "add_nos"
echo "result: $result"
echo "return: $retval"

См. Справочную страницу. Также этот вопрос и эта статья.

Stderr

В качестве другого ответа, предложенного , man page является хорошим местом для отправки вывода отладки. Вы также можете сделать намного больше, чем просто возвращаемое значение. Попробуйте это:

function add_nos {
    echo "input: $1" >&2
    echo $(($1 + 20))
    echo "done now!" >&2
}

echo "starting script" >&2
result=`add_nos $1`
echo "result: $result"

Затем запустите его с и без вывода отладки, перенаправив этот вопрос :

$ bash setup.sh 10  
starting script
input: 10
done now!
result: 30

$ bash setup.sh 10 2>/dev/null
result: 30

$ bash setup.sh 10 2>logfile
result: 30

$ cat logfile
starting script
input: 10
done now!
0
ответ дан 22 May 2018 в 12:37

Return

Значение return сохраняется в $? после каждого вызова команды / функции. Попробуйте это, чтобы получить к нему доступ:

function add_nos { echo "$1" echo $(($1 + 20)) return 1 } result=`add_nos $1` retval=$? # this is the "return" value of "add_nos" echo "result: $result" echo "return: $retval"

См. Справочную страницу. Также этот вопрос и эта статья.

Stderr

В качестве другого ответа, предложенного , man page является хорошим местом для отправки вывода отладки. Вы также можете сделать намного больше, чем просто возвращаемое значение. Попробуйте это:

function add_nos { echo "input: $1" >&2 echo $(($1 + 20)) echo "done now!" >&2 } echo "starting script" >&2 result=`add_nos $1` echo "result: $result"

Затем запустите его с и без вывода отладки, перенаправив этот вопрос :

$ bash setup.sh 10 starting script input: 10 done now! result: 30 $ bash setup.sh 10 2>/dev/null result: 30 $ bash setup.sh 10 2>logfile result: 30 $ cat logfile starting script input: 10 done now!
0
ответ дан 17 July 2018 в 19:01

Return

Значение return сохраняется в $? после каждого вызова команды / функции. Попробуйте это, чтобы получить к нему доступ:

function add_nos { echo "$1" echo $(($1 + 20)) return 1 } result=`add_nos $1` retval=$? # this is the "return" value of "add_nos" echo "result: $result" echo "return: $retval"

См. Справочную страницу. Также этот вопрос и эта статья.

Stderr

В качестве другого ответа, предложенного , man page является хорошим местом для отправки вывода отладки. Вы также можете сделать намного больше, чем просто возвращаемое значение. Попробуйте это:

function add_nos { echo "input: $1" >&2 echo $(($1 + 20)) echo "done now!" >&2 } echo "starting script" >&2 result=`add_nos $1` echo "result: $result"

Затем запустите его с и без вывода отладки, перенаправив этот вопрос :

$ bash setup.sh 10 starting script input: 10 done now! result: 30 $ bash setup.sh 10 2>/dev/null result: 30 $ bash setup.sh 10 2>logfile result: 30 $ cat logfile starting script input: 10 done now!
0
ответ дан 23 July 2018 в 19:48

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

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