Otu esi achọpụta mmezu nke iwu na Shell Script site na nchọta Shell


N'ime edemede a nke usoro nbibi script shei, anyị ga-akọwa ọnọdụ nbibi nke atọ shei, ya bụ tracing shei wee lelee ụfọdụ ọmụmaatụ iji gosi ka o si arụ ọrụ, yana otu enwere ike iji ya.

Akụkụ gara aga nke usoro a na-eme ka ìhè dị n'ụzọ doro anya na ụdị nbibi nke abụọ ọzọ shei: mode verbose na syntax check mode na ihe atụ dị mfe nghọta nke otu esi eme ka nbibi script shea na ụdịdị ndị a.

  1. Etu esi eme ka ọnọdụ nbibi akwụkwọ Shell dị na Linux – Nkebi 1
  2. Otu esi eme ọnọdụ nbibi okwu n'ime ederede Shell - Nkebi 2

Nchọgharị shell pụtara naanị ịchọta mmezu iwu ndị dị n'edemede shei. Ka ịgbanwuo tracing shei, jiri -x nhọrọ nbipu.

Nke a na-eduzi shei ahụ ka ọ gosipụta iwu niile yana arụmụka ha na njedebe ka a na-egbu ha.

Anyị ga-eji sys_info.shedemede shei dị n'okpuru, nke na-ebipụta ụbọchị na oge sistemụ gị nkenke, ọnụọgụ ndị ọrụ abanyela na oge sistemụ. Agbanyeghị, ọ nwere njehie syntax nke anyị kwesịrị ịchọta ma mezie ya.

#!/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

Chekwaa faịlụ ahụ ma mee ka edemede ahụ rụọ ọrụ. Enwere ike iji mgbọrọgwụ mee edemede ahụ, ya mere jiri sudo iwu mee ya dị ka n'okpuru:

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

Site na mmepụta dị n'elu, anyị nwere ike ịhụ nke ahụ, a na-ebu ụzọ mee iwu tupu a dochie ya dị ka uru nke mgbanwe.

Ọmụmaatụ, e bu ụzọ gbuo ụbọchị ahụ ma dochie ihe mmepụta ya dị ka uru nke DATE agbanwe.

Anyị nwere ike ịme nyocha syntax iji gosipụta naanị njehie syntax dị ka ndị a:

$ sudo bash -n sys_info.sh 

Ọ bụrụ na anyị elee nke ọma n'edemede shei, anyị ga-aghọta na ọ bụrụ nkwupụta na-efunarị okwu fi. Ya mere, ka anyị tinye ya na ọhụrụ script kwesịrị ka ugbu a dị ka n'okpuru:

#!/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

Chekwaa faịlụ ahụ ọzọ wee kpọọ ya ka ọ bụrụ mgbọrọgwụ wee mee ụfọdụ nyocha syntax:

$ sudo bash -n sys_info.sh

Nsonaazụ nke ọrụ nyocha syntax anyị dị n'elu ka na-egosi na enwere otu ahụhụ ọzọ na edemede anyị na ahịrị 21. Ya mere, anyị ka nwere mgbazi syntax anyị ga-eme.

Ọ bụrụ na anyị leba anya n'edemede ahụ n'otu oge ọzọ, njehie dị na ahịrị 21 bụ n'ihi nkwụghachi ụgwọ okpukpu abụọ na-efu (”) n'iwu echo ikpeazụ n'ime ọrụ print_sys_info .

Anyị ga-agbakwunye ọnụ okwu mmechi okpukpu abụọ na iwu echo wee chekwaa faịlụ ahụ. Edemede agbanwere dị n'okpuru:

#!/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

Ugbu a, lelee edemede ahụ n'otu oge ọzọ.

$ sudo bash -n sys_info.sh

Iwu dị n'elu agaghị emepụta mmepụta ọ bụla n'ihi na edemede anyị adịla mma ugbu a n'ụzọ ziri ezi. Anyị nwekwara ike ịchọpụta mmezu nke edemede ahụ nke ugboro abụọ ma ọ kwesịrị ịrụ ọrụ nke ọma:

$ sudo bash -x sys_info.sh

Ugbu a na-agba ọsọ script.

$ sudo ./sys_info.sh

Mkpa nke ịchụso mkpochapụ Script Shell

Ịchọta edemede Shell na-enyere anyị aka ịchọpụta njehie syntax yana nke ka mkpa, mperi ezi uche dị na ya. Were dịka ọmụmaatụ ọrụ check_root na sys_info.sh script shei, nke ezubere iji chọpụta ma onye ọrụ nwere mgbọrọgwụ ma ọ bụ na ọ bụghị, ebe ọ bụ naanị na a na-ahapụ edemede ahụ ka emee ya. site na superuser.

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

A na-achịkwa anwansi ebe a site na if nkwupụta okwu [ \$UID\ -ne \$ROOT_ID\ ], ozugbo anyị ejighị onye ọrụ ọnụọgụ dabara adaba. (-ne na nke a, nke pụtara na ọ bụghị nhata ), anyị na-ejedebe na njehie ezi uche nwere ike ime.

N'iche na anyị ji -eq ( pụtara nhata), nke a ga-ahapụ onye ọrụ sistemụ yana onye ọrụ mgbọrọgwụ ịme edemede ahụ, yabụ njehie ezi uche dị na ya.

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

Mara: Dịka anyị lere anya na mmalite nke usoro isiokwu a, iwu arụnyere n'ime shei nwere ike rụọ ọrụ ndozi n'otu akụkụ nke edemede shei.

Ya mere, ahịrị dị n'okpuru ga-enyere anyị aka ịchọta njehie ezi uche dị na ọrụ ahụ site na ịchọta mmezu ya:

Edemede ahụ nwere mperi ezi uche dị na ya:

#!/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

Chekwaa faịlụ ahụ ma kpọọ edemede ahụ, anyị nwere ike ịhụ na onye ọrụ usoro mgbe niile nwere ike ịme edemede ahụ na-enweghị sudo dị ka ọ dị na mmepụta n'okpuru. Nke a bụ n'ihi na uru USER_ID bụ 100 nke na-adaghị na mgbọrọgwụ ROOT_ID nke bụ 0.

$ ./sys_info.sh

Ọfọn, nke ahụ bụ maka ugbu a, anyị abịala na njedebe nke usoro nbibi nke shei, ụdị nzaghachi dị n'okpuru ebe a nwere ike iji zaa ajụjụ ọ bụla ma ọ bụ nzaghachi nye anyị, gbasara ntuziaka a ma ọ bụ usoro 3 dum.