문제는 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
.