简单的 if 命令在 csh 脚本中不起作用

简单的 if 命令在 csh 脚本中不起作用

问题是,当我使用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变体(kshbash)。这是重写后使用的脚本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.

相关内容