0

这是我的第一个 bash 脚本,基本上它只是关闭了我的第二个监视器。但是我一直遇到问题,因为当我运行它时它一直给我错误。

#!/bin/bash


read -p "Do you want the 2nd monitor on or off? " ON_OFF

if [$ON_OFF == on]; then
xrandr --output DVI-I-3 --auto --right-of DVI-I-0
echo "done"
fi

if [$ON_OFF == off]; then
xrandr --output DVI-I-3 --off   
echo "done"
fi

当我运行它时,我得到

monitor_control.sh: 11: [[off: not found
monitor_control.sh: 16: [[off: not found

谁能向我解释为什么它不起作用?

4

2 回答 2

4

您需要在[和周围添加空格],因为它们是 bash 中的单独命令。

此外,需要在参数扩展周围使用引号,或者需要使用引号[[ ]]代替[ ].

也就是说,您可以使用:

if [[ $ON_OFF = on ]]

...或者您可以使用:

if [ "$ON_OFF" = on ]

否则如果$ON_OFF为空会报错。

最后,最好使用if ... then ... else ... fi,例如:

if [[ $ON_OFF = on ]]; then
    xrandr --output DVI-I-3 --auto --right-of DVI-I-0
else
    xrandr --output DVI-I-3 --off   
fi
echo "done."
于 2012-08-20T17:44:53.957 回答
0

这应该有效。

#!/bin/bash


echo -n "Do you want the 2nd monitor on or off? "
read ON_OFF;

if [ $ON_OFF == "on" ]; then
  xrandr --output DVI-I-3 --auto --right-of DVI-I-0
  echo "done"
fi

if [ $ON_OFF == "off" ]; then
  xrandr --output DVI-I-3 --off
  echo "done"
fi
于 2012-08-20T17:41:44.300 回答