Если вы хотите, чтобы ваша value
переменная была 00
, не объявляйте ее как целое число в bash
. Объявление его как целого числа с declare -i
предложит оболочке оценить его как целое число, а целочисленное значение 00
равно нулю.
Обратите внимание, следующий код выведетnot same
:
declare -i value='00'
optics_status='00'
if [ "$optics_status" = "$value" ]; then
echo 'same'
else
echo 'not same'
fi
Изменение declare -i value='00'
на value='00'
приведет к выводу same
.
Также обратите внимание на цитирование расширений переменных выше.
Конечно, вы могли бы также рассмотреть преобразование значений обеих переменных в целые числа, сравнив их с помощью
if [ "$optics_status" -ne "$value" ]; then
или
if (( optics_status != value )); then
но это предполагает, что вы знаете, что $optics_value
это всегда будет строкой, которая может быть преобразована в целое (и десятичное целое число, а не восьмеричное целое тоже ).
Вы не можете «указать терминалу 2 использовать VPN-подключение для всех будущих команд».
Тем не менее, вы можете создать новое сетевое пространство имен , запустить VPN в этом пространстве имен или переместить сетевой интерфейс VPN в это пространство имен (, возможно, после подключения его подходящим образом к основной сети. пространство имен и/или ваш физический сетевой интерфейс ), затем запустите новое окно терминала в этом пространстве имен сети, и все команды будут использовать VPN по соединению (и только VPN-соединение ).
Google предлагает множество руководств по сетевым пространствам имен. Основная команда, которая вам понадобится, это ip netns
. Вам также потребуется достаточное понимание основ работы в сети, чтобы подключить сетевое пространство имен.
И да, vpnns
работает очень похожим образом.
Ответ на ваш вопрос уже был дан на StackExchange:Привязать программу unix к определенному сетевому интерфейсу . Я считаю, что решение с использованием App -Route -Jail решит эту проблему за вас. Я считаю, что вы не можете точно привязать окно терминала к VPN, но вы можете заставить программу использовать определенный сетевой интерфейс при выполнении.
Если это вам поможет, вы можете создать сценарий оболочки для youtube -dl с правильными аргументами команды, чтобы заставить его использовать VPN, и использовать этот сценарий оболочки в терминале 2 для использования с VPN.
Пример такого сценария оболочки (требует оболочки POSIX, например, Bash)
#!/bin/bash
MARK=10 LD_PRELOAD=./mark.so /path/to/youtube-dl "$@"
Обратите внимание, что для этого вам потребуются два исполняемых файла, один из которых всегда будет работать через обычную сеть, а другой — через VPN.