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.
- Bii o ṣe le Jeki Ipo n ṣatunṣe aṣiṣe Ikarahun ni Linux - Apá 1
- 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.