Bii o ṣe le Wa ipaniyan Awọn ofin ni Ikarahun Ikarahun pẹlu Ṣiṣawari Ikarahun


Ninu nkan yii ti jara n ṣatunṣe aṣiṣe iwe ikarahun, a yoo ṣalaye ipo n ṣatunṣe afọwọkọ ikarahun ikarahun, iyẹn jẹ wiwa kakiri ati wo awọn apẹẹrẹ diẹ lati ṣe afihan bi o ṣe n ṣiṣẹ, ati bi o ṣe le lo.

Apakan ti tẹlẹ ti jara yii tan imọlẹ kedere si awọn ipo n ṣatunṣe aṣiṣe iwe ikarahun miiran meji: ipo-ọrọ ọrọ ati ipo iṣayẹwo sintasi pẹlu awọn apẹẹrẹ rọọrun lati loye ti bi o ṣe le mu ki n ṣatunṣe aṣiṣe iwe ikarahun ni awọn ipo wọnyi.

  1. Bii o ṣe le Jeki Ipo n ṣatunṣe aṣiṣe Ikarahun ni Linux - Apá 1
  2. Bii o ṣe le ṣe Ipo N ṣatunṣe aṣiṣe Sintasi ni Awọn iwe afọwọkọ ikarahun - Apá 2

Iwa kiri ikarahun nirọrun tumọ si wiwa ipaniyan ti awọn ofin ni iwe afọwọkọ ikarahun kan. Lati yipada lori itọpa ikarahun, lo aṣayan n ṣatunṣe aṣiṣe -x .

Eyi ṣe itọsọna ikarahun lati han gbogbo awọn ofin ati awọn ariyanjiyan wọn lori ebute bi wọn ti n ṣiṣẹ.

A yoo lo sys_info.sh iwe ikarahun ni isalẹ, eyiti o tẹ sita ọjọ ati akoko eto rẹ ni ṣoki, nọmba awọn olumulo ti o wọle ati akoko eto. Sibẹsibẹ, o ni awọn aṣiṣe sintasi ti a nilo lati wa ati ṣatunṣe.

#!/bin/bash
#script to print brief system info

ROOT_ID="0"

DATE=`date`
NO_USERS=`who | wc -l`
UPTIME=`uptime`

check_root(){
    if [ "$UID" -ne "$ROOT_ID" ]; then
        echo "You are not allowed to execute this program!"
        exit 1;    
}

print_sys_info(){
    echo "System Time    : $DATE"
    echo "Number of users: $NO_USERS"
    echo "System Uptime  : $UPTIME
}

check_root
print_sys_info

exit 0

Fipamọ faili naa ki o jẹ ki iwe afọwọkọ ṣiṣẹ. Iwe afọwọkọ le ṣee ṣiṣe nipasẹ gbongbo, nitorinaa lo aṣẹ sudo lati ṣiṣẹ bi isalẹ:

$ chmod +x sys_info.sh
$ sudo bash -x sys_info.sh

Lati iṣẹjade ti o wa loke, a le ṣe akiyesi iyẹn, aṣẹ kan ni ṣiṣe akọkọ ṣaaju iṣiṣẹ rẹ ti rọpo bi iye ti oniyipada kan.

Fun apẹẹrẹ, ọjọ ti a kọkọ ṣiṣẹ akọkọ ati iṣelọpọ rẹ ti rọpo bi iye ti oniyipada DATE.

A le ṣe ṣayẹwo sintasi lati ṣafihan awọn aṣiṣe sintasi nikan bi atẹle:

$ sudo bash -n sys_info.sh 

Ti a ba wo akọọlẹ ikarahun naa ni idaniloju, a yoo mọ pe ti o ba jẹ asọye sonu ipari ọrọ fi . Nitorinaa, jẹ ki a ṣafikun rẹ ati pe iwe afọwọkọ tuntun yẹ ki o wa bayi ni isalẹ:

#!/bin/bash
#script to print brief system info

ROOT_ID="0"

DATE=`date`
NO_USERS=`who | wc -l`
UPTIME=`uptime`

check_root(){
    if [ "$UID" -ne "$ROOT_ID" ]; then
        echo "You are not allowed to execute this program!"
        exit 1;
   fi    
}

print_sys_info(){
    echo "System Time    : $DATE"
    echo "Number of users: $NO_USERS"
    echo "System Uptime  : $UPTIME
}

check_root
print_sys_info

exit 0

Fipamọ faili lẹẹkansii ki o pe ni gbongbo ki o ṣe ayẹwo sintasi diẹ:

$ sudo bash -n sys_info.sh

Abajade ti iṣẹ ṣiṣe ayẹwo sintasi wa loke ṣi fihan pe kokoro diẹ sii wa ninu iwe afọwọkọ wa lori laini 21. Nitorinaa, a tun ni atunse sintasi diẹ lati ṣe.

Ti a ba wo nipasẹ iwe afọwọkọ atupale lẹẹkan sii, aṣiṣe ti o wa lori laini 21 jẹ nitori agbasọ ilọpo meji ti nsọnu (”) ninu aṣẹ iwoyi ti o kẹhin ninu iṣẹ print_sys_info .

A yoo ṣafikun agbasọ ilọpo meji ti o pari ninu aṣẹ iwoyi ki o fi faili naa pamọ. Iwe afọwọkọ ti a yipada ni isalẹ:

#!/bin/bash
#script to print brief system info

ROOT_ID="0"

DATE=`date`
NO_USERS=`who | wc -l`
UPTIME=`uptime`

check_root(){
    if [ "$UID" -ne "$ROOT_ID" ]; then
        echo "You are not allowed to execute this program!"
        exit 1;
    fi
}

print_sys_info(){
    echo "System Time    : $DATE"
    echo "Number of users: $NO_USERS"
    echo "System Uptime  : $UPTIME"
}

check_root
print_sys_info

exit 0

Bayi ṣapọpọ ṣayẹwo iwe afọwọkọ lẹẹkan si.

$ sudo bash -n sys_info.sh

Aṣẹ ti o wa loke kii yoo ṣe agbejade eyikeyi nitori iwe afọwọkọ wa ti ni atunṣe adaṣe bayi. A tun le tọpa ipaniyan ti iwe afọwọkọ gbogbo fun akoko keji ati pe o yẹ ki o ṣiṣẹ daradara:

$ sudo bash -x sys_info.sh

Bayi ṣiṣe awọn akosile.

$ sudo ./sys_info.sh

Pataki Titapa Ipaniyan Ikawe Ikarahun

Wiwa iwe afọwọkọ Shell ṣe iranlọwọ fun wa idanimọ awọn aṣiṣe sintasi ati pataki julọ, awọn aṣiṣe ọgbọn. Mu apeere iṣẹ check_root ninu iṣẹ sys_info.sh iwe afọwọkọ, eyiti o pinnu lati pinnu boya olumulo kan jẹ gbongbo tabi rara, nitori iwe-afọwọkọ nikan ni a gba laaye lati pa. nipasẹ superuser.

check_root(){
    if [ "$UID" -ne "$ROOT_ID" ]; then
        echo "You are not allowed to execute this program!"
        exit 1;
    fi
}

Idan naa ni iṣakoso nipasẹ ti o ba jẹ alaye ikosile [\ "$UID \" -ne\"$ROOT_ID \"] , ni kete ti a ko ba lo oni nọmba onitumọ to pe. ( -ne ninu ọran yii, eyiti o tumọ si pe ko dọgba), a pari pẹlu aṣiṣe ọgbọn ti o ṣeeṣe.

A ro pe a lo -eq (tumọ si dogba si), eyi yoo gba laaye eyikeyi olumulo eto bii olumulo olumulo lati ṣiṣẹ iwe afọwọkọ naa, nitorinaa aṣiṣe ọgbọn.

check_root(){
    if [ "$UID" -eq "$ROOT_ID" ]; then
        echo "You are not allowed to execute this program!"
        exit 1;
    fi
}

Akiyesi: Bi a ṣe wo ṣaju ni ibẹrẹ ti jara yii, aṣẹ ti a ṣe sinu ikarahun ti o ṣeto le mu n ṣatunṣe aṣiṣe ṣiṣẹ ni apakan kan pato ti iwe afọwọkọ ikarahun kan.

Nitorinaa, laini ti o wa ni isalẹ yoo ṣe iranlọwọ fun wa lati wa aṣiṣe aitọ ni iṣẹ yii nipa wiwa ipaniyan rẹ:

Iwe afọwọkọ pẹlu aṣiṣe ọgbọn:

#!/bin/bash
#script to print brief system info

ROOT_ID="0"

DATE=`date`
NO_USERS=`who | wc -l`
UPTIME=`uptime`

check_root(){
    if [ "$UID" -eq "$ROOT_ID" ]; then
        echo "You are not allowed to execute this program!"
        exit 1;
    fi
}

print_sys_info(){
    echo "System Time    : $DATE"
    echo "Number of users: $NO_USERS"
    echo "System Uptime  : $UPTIME"
}

#turning on and off debugging of check_root function
set -x ; check_root;  set +x ;
print_sys_info

exit 0

Fi faili naa pamọ ki o si pe iwe afọwọkọ naa, a le rii pe olumulo eto igbagbogbo le ṣiṣe iwe afọwọkọ laisi sudo bi ninu iṣelọpọ ni isalẹ. Eyi jẹ nitori iye ti USER_ID jẹ 100 eyiti ko dọgba si gbongbo ROOT_ID eyiti o jẹ 0.

$ ./sys_info.sh

O dara, iyẹn ni fun bayi, a ti de si opin jara n ṣatunṣe aṣiṣe ikarahun, fọọmu idahun ni isalẹ le ṣee lo lati koju eyikeyi ibeere tabi esi si wa, nipa itọsọna yii tabi gbogbo jara 3-apakan.