我的代码如下
word=$1
if [ $word = "night" ]
then
redshift -O 1300 > /dev/null
elif [ $word = "movie" ]
then
redshift -x > /dev/null
else
redshift -O 2800 > /dev/null
fi
虽然我每次都跑它
justin@justin: shift night
我收到错误
bash: shift: night: numeric argument required
编辑:当我将其作为
运行时./shift night
按预期工作
我不完全确定为什么。 (我的想法是编写一个脚本,根据关键字改变屏幕的温度,然后在java中为它构建一个GUI来使用它!)
答案 0 :(得分:6)
shift
是bash中内置命令的名称,解释了当你这样调用它时的奇怪错误。此外,即使您已经调用了其他内容,当前目录也不在您的PATH中,因此您需要使用./
限定当前目录中的二进制文件来调用它,如您所发现的那样。 (如果您将命令调用为其他内容而不是使用./
作为前缀,则会发现命令未找到错误。)
答案 1 :(得分:-1)
Joseph Sible's answer涵盖了正确的问题,除此之外,代码应该使用case
而不是所有if
s:
case "$1" in
night) redshift -O 1300 ;;
movie) redshift -x ;;
*) redshift -O 2800 ;;
esac > /dev/null