問題は、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
(not)として識別された実行可能ファイルを指す必要があります/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
すべての変数が対話型シェルを汚染することなく独自のコンテキストに保持されるようにすることです。
これよりも優れていることは、基本的にスクリプトに適していないシェル言語を学ぶ試みをやめ、その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
。