这是我的第一个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
有人可以向我解释为什么它不起作用吗?
答案 0 :(得分: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."
答案 1 :(得分: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