问题是,当我使用source overspeed
(在授予自己执行权限后)执行此脚本时,它会问我“你要走多快?”正如我所设置的,但在我输入任何值后,它会给出错误“未找到事件”,而不是显示“您超速了!!!”。
顺便说一句,这是我的脚本:
#!/bin/csh
# Over speed indicator
#
echo -n "How fast are you going?"
set speed = $<
if (speed > 100) echo "You are over speeding!!!"
答案1
您的脚本中有几个错误。第一行应该指向您的csh
可执行文件,您在注释中将其标识为/usr/bin/csh
(而不是/bin/csh
)。该if
行缺少$
标识speed
为变量的内容。这是更正后的脚本
#!/usr/bin/csh
# Over speed indicator
#
echo -n "How fast are you going?"
set speed = $<
if ($speed > 100) echo "You are over speeding\!\!\!"
理想情况下,您将运行它,而./overspeed
不是运行它source overspeed
,以便它设置的任何变量都保留在它自己的上下文中,而不是污染您的交互式 shell。
比这一切更好的是,停止尝试学习一种从根本上不适合脚本编写的 shell 语言,而使用其中一个sh
变体(ksh
或bash
)。这是重写后使用的脚本bash
:
#!/bin/bash
# Over speed indicator
#
read -p "How fast are you going? " speed
if $(( speed > 100 ))
then
echo 'You are over speeding!!!'
fi
和以前一样,如果脚本文件是可执行的,您可以使用./overspeed
.