Возможно ли в bash условно перенаправить вывод либо на стандартный вывод, либо на /dev/null?

Мне повезло с использованием:

from win32con import VK_CAPITAL
if GetKeyState(VK_CAPITAL) == 1:
    print ("CAPS Lock is on.")
elif GetKeyState(VK_CAPITAL) == 0:
    print ("CAPS Lock is off.")

Это на компьютере с Windows с Python3, поэтому не уверен на 100%, работает ли он и на Linux, но стоит отметить как вариант для тех, кому нужно сделать это на Windows, в этом случае это точно работает -I сам видел.

Рэнди

1
17.07.2020, 06:40
1 ответ

Использовать функцию оболочки:

runmaybe () {
  if [[ $mode == "--simulate" ]]
  then echo $@
  else $@ 2>&1 > /dev/null
  fi
}

и это доказательство концепции:

#!/bin/bash

filethatwillsavestderr="/tmp/foo"
filethatwillsavestdout="/tmp/bar"

mode="--simulate" #switch this to another mode to see the effect

runmaybe () {
  if [[ $mode == "--simulate" ]]
  then echo "I should run '$@' but i'm not really doing it"
  else $@ > $filethatwillsavestdout 2> $filethatwillsavestderr
  fi
}

runmaybe ls
2
18.03.2021, 23:19

Теги

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