.:: การเขียน Shell Script ::.

[Printer Friendly]
ผู้เขียน/โดย : เกริก ภิรมย์โสภา (Krerk Piromsopa)
เขียนเมื่อ/ปรับปรุง : 2004-07-14 16:56:02
มีผู้เยี่ยมชมทั้งสิ้น : 47094

เอกสารนี้จัดทำขึ้นเพื่อแนะนำ และใช้สำหรับการอ้างอิงให้กับผู้ที่จะเขียนโปรแกรมบน Shell โดยจะกล่าวถึงโครงสร้างโดยทั่วไปของ Shell แสดงการใช้คำสั่งต่างๆ พร้อมตัวอย่างประกอบ ทั้งนี้ตัวอย่างดังกล่าวจะเปรียบเทียบระหว่าง bash , ksh และ tcsh เป็นหลัก โดยข้อมูลในเอกสารนี้จะเน้นเพียงข้อมูลที่เป็นมาตรฐานของ Shell ทั่วไปเท่านั้น เนื่องจากในปัจจุบัน Shell หมายๆ ตัวได้มีการปรับปรุงให้ทำงานได้กว้างมากขึ้น และ เขียนง่ายยิ่งขึ้นเช่น bash บน Linux ซึ่งจะรวมความสามารถของ ksh และ tcsh หลายอย่างไว้ด้วยกัน เป็นต้น

ลักษณะทั่วไปของ Shell

หน้าที่พื้นฐานของ Shell โดยทั่วไปนั้นคือการรับคำสั่งจาก User เพื่อทำการบอก OS ให้ Load และ Run Program ต่างๆ อย่างไรก็ตามได้มีการพัฒนาให้ Shell มีความสามารถในการประมวลผลคำสั่งต่างๆ เพื่อให้ทำงานในลักษณะของ Batch ได้ ทั้งนี้โครงสร้างของโปรแกรมต่างๆ หรือ Shell นั้นจะประกอบด้วยตัวแปรระบบ หรือ สภาวะแวดล้อม(Envirenment) ซึ่งพร้อมที่จะส่งให้โปรแกรมอื่นๆ ประมวลผลต่อ ประโยคเงื่อนไขต่างๆ ระบบ Profile สำหรับวัดเวลาในการประมวลผลของโปรแกรมต่างๆ และ User Defined Function

ในการวัดเวลาที่ใช้ในการทำงานคำสั่งต่างๆ ของ Unix นั้นสามารถทำได้โดยใส่ time นำหน้าคำสั่งที่ต้องการประมวลผล ซึ่งโปรแกรมจะบอก OS ให้ทำการจับเวลา และ รายงานผลเวลาที่ใช้ในการประมวลผลหลังจากทำงานเสร็จ เช่น

time ls -al /bin/*

สำหรับกรณี Shell บน Unix นั้น การเขียนคำสั่งแต่ละคำสั่งจะต้องจบคำสั่ง ด้วยบรรทัดใหม่ หรือ เครื่องหมาย semi-colon เสมอ “;” และกรณีที่คำสั่งมีความยาวมาก (ไม่จบภายใน 1 บรรทัด) ให้จบบรรทัดด้วยเครื่องหมาย “” แล้วพิมพ์ต่อในบรรทัดถัดไป เช่น

echo "Test"; ls;

echo "Hello
world"

การเขียน Comment ใน Shell Script จะใช้เครื่องหมาย “#”

ทั้งนี้ในการเขียนโปรแกรมที่เป็นภาษา Script ต่างๆ บน Unix นั้น ในบรรทัดแรกเราควรจะระบุชื่อโปรแกรมที่จะทำการประมวลผล Script นั้นๆ ไว้ด้วยเช่น

#! /bin/ksh

หรือ กรณีเป็น Perl อาจจะเขียนเป็น

#! /usr/bin/perl

เป็นต้น

การใช้งาน Variable / Environment

บนระบบ OS โดยทั่วไปมักจะมี Environment หรือ System Variable เพื่อส่งผ่านค่าระหว่างโปรแกรมต่างๆ ภายในระบบ เสมอ ซึ่งโดยทั่วไปเราจะอ่านค่า Environment (ของ OS เกือบทุกตัว) ได้โดยการใช้คำสั่ง set

ตัวอย่างการตั้งค่า Variable ใน Shell เช่น

bash / ksh tcsh

myname="Krerk Piromsopa"
count=5;

set myname="Krerk Piromsopa"
set count=5;

นอกจากนี้เรายังสามารถนำผลลัพธ์จากการ Run Programm อื่นๆ มาเป็นค่า Variable ได้อีกด้วย โดยใช้ Back Quote แทน หรือ Run คำสั่งภายในเครื่องหมาย $(command) เช่น

bash / ksh tcsh
list = `ls`
# หรือ
list=$(ls)
set list = `ls`
# หรือ
set list=$(ls)

 

ทั้งนี้หากต้องการให้ค่า Variable หรือ Environment คงอยู่หลังจากที่ Run Shell สามารถทำได้โดยการ export เช่น

export myname,count

นอกจากนี้ยังมีตัวแปรระบบที่จะใช้สำหรับการอ้างอิงในโปรแกรม Shell ได้อีกด้วย เช่น

ตัวแปร ความหมาย
$# แสดงจำนวน Parameter ที่ส่งมาให้กับระบบ
$? เก็บค่าที่ได้จากประมวลผลคำสั่งก่อนหน้านี้
$0 แสดงชื่อของ โปรแกรมที่กำลังประมวลผลอยู่
$* เก็บค่า Parameter ทุกตัวที่ใช้ในการประมวลผล ($1 $2 ....)
"$@" เก็บค่า Parameter ทุกตัวที่ใช้ในการประมวลผล ("$1" "$2" ....)

การใช้งาน Variable ทุกตัวนั้นจะเป็น Implicit Declaration กล่างคือผู้ใช้ไม่จำเป็นต้องประกาศตัวแปร เช่นในภาษา C หรือ ภาษาชั้นสูงอื่นๆ และ เมื่อต้องการยกเลิกตัวแปรนั้นสามารถทำได้โดยใช้คำสั่ง unset varname เช่น

unset myname

test และ expression

บน bash และ ksh จะมีคำสั่ง Test และการเขียนเงื่อนไขในการตรวจสอบ Expression ต่างๆ ในการเขียนประโยคเงื่อนไขต่าง ซึ่งมีโครงสร้างการเขียนดังนี้

test expression

หรือ

expression  ]

สำหรับ tcsh นั้นจะไม่มีคำสั้ง test แต่จะมีการนำ expression เพื่อไปใช้ในการประมวผลผลคำสั่งต่างๆ เช่นกัน

ทั้งนี้ expression บน bash กับ ksh และ tcsh นั้นจะมีโครงสร้างที่แตกต่างกัน ดังอธิบายได้ดังต่อไปนี้

bash / ksh tcsh ความหมาย
คำสั่งเกี่ยวกับจำนวนเต็ม
int1 -eq int2 int1 == int2 เป็นจริงเมื่อ int1 เท่ากับ int2
int1 -ge int2 int1 >= int2 เป็นจริงเมื่อ int1 มากกว่าหรือเท่ากับ int2
int1 -gt int2 int1 > int2 เป็นจริงเมื่อ int1 มากกว่า int2
int1 -le int2 int1 <= int2 เป็นจริงเมื่อ int1 น้อยกว่าหรือเท่ากับ int2
int1 -lt int2 int1 < int2 เป็นจริงเมื่อ int1 น้อยกว่า int2
int1 -ne int2 int1 != int2 เป็นจริงเมื่อ int1 ไม่เท่ากับint2
คำสั่งเกี่ยวกับ String
str1 = str2 str1 == str2 เป็นจริงเมื่อ str1 เหมือนกับ str2
str1 != str2 str1 != str2 เป็นจริงเมื่อ str1 ไม่เหมือนกับ str2
str   เป็นจริงเมื่อ str ไม่เป็น null
-n str   เป็นจริงเมื่อ str มีความยาวมากกว่า 0
-z str   เป็นจริงเมื่อ str มีความยาวเป็น 0
คำสั่งเกี่ยวกับ file
-d filename -d filename เป็นจริงเมื่อ filename เป็น directory
-f filename -f filename เป็นจริงเมื่อ filename เป็น file
-r filename -r filename เป็นจริงเมื่อ filename อ่านได้โดยโปรแกรม
-s filename   เป็นจริงเมื่อ filename มีขนาดไม่เป็น 0
-w filename -w filename เป็นจริงเมื่อ filename เขียนได้โดยโปรแกรม
-x filename -x filename เป็นจริงเมื่อ filename run ได้โดยโปรแกรม
  -e filename เป็นจริงเมื่อ filename มีชื่ออยู่
  -o filename เป็นจริงเมื่อ filename เป็นของผู้ใช้ปัจจุบัน
  -z filename เป็นจริงเมื่อ filename มีขนาดเป็น 0
คำสั่งเกี่ยวกับ Logical อื่นๆ
! expr ! expr เป็นจริงเมื่อ exp เป็นเท็จ
exp1 -a exp2 exp1 && exp2 เป็นจริงเมื่อ exp1 และ exp2 เป็นจริง
exp1 -o exp2 exp1 || exp2 เป็นจริงเมื่อ exp1 หรือ exp2 เป็นจริง

เงื่อนไข if

โครงสร้าง

bash / ksh tcsh

if [expression ]
then
     commands
elif [ exprression ]
then
     commands
else
     commands
fi

if (expression) then
     commands
else if (expression) then
     commands
else
     commands
endif

ทั้งนี้จะมี elif หรือ ไม่มี else ก็ได้

ตัวอย่างการใช้งาน เช่น

#! /bin/ksh
if [ -f .signature ]
then
     echo "There is .signature file in this current directory"
else
     echo "File .signature could not be found.
fi

เงื่อนไข case หรือ switch

โครงสร้าง

bash / ksh tcsh

case string  in
     str1)
          commands;;
     str2)
          commands;;
     str3)
          commands;;
     *)
          commands;;
esac

switch(string)
     case str1:
          commands
     breaksw
     case str2:
          commands
     breaksw
     case str3:
          commands
     breaksw
     default:
          commands
     breaksw
endsw

ในกรณีของ bash และ ksh นั้น จะใช้ ;; แทน break

ตัวอย่างการใช้งาน เช่น

#! /bin/ksh
# Sample switch case
if [ $# -lt 2 ]
then
  echo "Using : $0 [a | b | c] filename"
else
case $1 in
  "a" | "A")
    cat $2;;
  "b" | "B")
  &nsbp; more $2;;
  "c" | "C")
    less $2;;
  *)
  echo "I Don't understand $1"
esac fi

เงื่อนไข for

โครงสร้าง

bash / ksh tcsh

for var in list
do
commands
done

foreach var (list)
commands
end

ตัวอย่างการใช้งาน เช่น

#! /bin/ksh
# Sample for
for x in "a " "b" "x*"
do
  if [ -f "$x" ]
  then
    echo "--- found $x ---"
  else
    echo "--- Not found $x ---"
  fi

เงื่อนไข while

โครงสร้าง

bash / ksh tcsh
while [ expression ]
do
commands
done
while (expression)
commands
end

ตัวอย่างการใช้ while เช่น

#! /bin/ksh
count=1
while [ -n "$*" ]
do
echo "This is parameter no $count $1"
shift
count=`expr $count+1`
done

เงื่อนไข until

โครงสร้าง

bash / ksh tcsh
until [ expression ]
do
commands
done
ไม่สนับสนุน

เงื่อนไข repeat

bash / ksh tcsh
ไม่สนับสนุน repeat count command

ตัวอย่างการใช้ repeat เช่น

#! /bin/tcsh
repeat $num echo -n "+"
echo ""

คำสั่งอื่นๆ ที่ช่วยให้เขียน Interactive Shell Script ได้ง่ายขึ้น

คำสั่ง read

ใช้สำหรับอ่านค่าตัวแปรจาก Standard Input เช่น

#! /bin/ksh
echo -n "Enter FirstName Lastname"
read x y
echo ""
echo "Your firstname is $y, $x."

คำสั่ง echo

ใช้เพื่อการแสดงข้อความ

คำสั่ง shift

ใช้สำหรับการ Shift ค่าตัวแปรใน $* ไป 1 ตำแหน่ง

การสร้างคำสั่งใหม่ (Function)

โครงสร้าง

bash / ksh tcsh

[function] fname {
      (shell commands)
}

ไม่สนับสนุน

ซึ่งเราสามารถเรียกใช้ Function ได้โดย

fname [ parm1 parm2 parm3 ... ]

ตัวอย่างเช่น

#! /bin/bash

print () {
echo $1 $2;
}

a=10;
b=20;
print $a $b

การประมวลผลทางคณิตศาสตร์ และ expression

เราสามารถประมวลผลบวกลบคูณหาร หรือ expression ต่างๆ ได้โดยใช้โปรแกรม expr ช่วย เช่น

a=`expr $a + 1`  หรือ set a=`expr $a + 1`

ในกรณีของ bash เราสามารถใช้ a=$(($a + 1 )) แทนได้เลย

ข้อควรระวังคือ จะต้องมีการเว้นวรรคระหว่าง ตัวแปร ค่าคงที่ และ เครื่องหมาย (มิเช่นนั้น จะได้ผลลัพธ์เป็น string ต่อกัน) เครื่องหมายและการปฏิบัติการที่ใช้ได้ใน expr คือ +, -, *, / , % (modulo หรือ หารเอาเศษ) นอกจากนี้ยังมีการเปรียบเทียบต่างๆ เช่น =, \<, \>, \<=, \>=, และ != (กรณีใช้กับ bash $(( expression )) ให้นำเครื่องหมาย \ ออก การเปรียบเทียบเหล่านี้จะให้ผลลัพธ์เป็น 0 หากเป็นเท็จ และ 1 หากเป็นจริง

เกร็ดเล็กน้อยเกี่ยวกับการใช้ expr

expr1 \| expr2

จะแสดงผลลัพธ์จาก expr2 หาก expr1 เป็น 0 หรือ NULL เช่น
expr 1 - 1 \| "zero"
จะได้ผลลัพธ์เป็น "zero" เนื่องจาก 1 - 1 = 0 เป็นต้น

expr1 \& expr2

จะแสดงผลลัพธ์จาก expr1 หาก ไม่มีอันใดเป็น 0 หรือ NULL เช่น
expr valid \& 3 - 2 \& 4
จะได้ผลลัพธ์เป็น "valid" เนื่องจากไม่มี expression ใด เป็น 0 เป็นต้น

expr1 : expr2

จะเปรียบเทียบ expr1 กับ expr2 ตามมาตรฐาน regular expression เช่น
expr $HOME : ".*home.*"
จะตรวจสอบว่ามีคำว่า home อยู่ใน $HOME หรือไม่ เป็นต้น

เอกสารอ้างอิง


Comment1
เยี่ยม กำลังต้องการเลย ขอบคุณมาก ๆ ครับ ตั้งใจพัฒนาต่อไนครับ
From:นายที <ninetea< at >hotmail.com>Date: 2005-05-11 10:41:18

Comment2
ขอบคุณมากคะ จะเข้ามาอ่านอีกนะคะ รอ บทต่อไปคะ ^_______^
From:กระต่าย <กระต่าย< at >hotmail.com>Date: 2005-05-19 09:36:32

Comment3
ขอบคุณ ด้วยอีกคนนะครับ ^^
From:นุ <>Date: 2005-06-21 10:24:17

Comment4
ช่วยได้เยอะเลยขอบคุณมาก
From:เร <>Date: 2006-07-03 13:05:25

Comment5
ขอบคุณครับผม เป็นประโยชน์มากเลยครับ
From:x_za <>Date: 2006-07-26 23:16:00

Comment6
อ่านไม่รู้เรื่องเลย น่าจะเขียนให้เข้าใจมากกว่านี้
From:โลนัน <ronunkong< at >hotmail>Date: 2006-07-30 00:05:28

Comment7
Thank You Very Much `^ ^
From:AiPaTz <l3aipat< at >hotmail.com>Date: 2006-09-18 01:58:39

Comment8
ขอบคุณมากๆนะคะ
มีประโยชน์ และได้รับควารู้มากค่ะ
From:ลักษณียา <dogkes< at >chaiyo.com>Date: 2006-09-25 13:51:16

Comment9
<h1>เยี่ยม</h1>
From:<h1>เย่ยม</h1> <>Date: 2006-11-19 21:10:30

Comment10
ช่วยแนะนำหนังสือที่น่าสนใจเกี่ยวกับเรื่องนี้หน่อยได้มั้ยครับ
ขอขอบคุณล่วงหน้านะครับ ....
From:Dnt_Upload <m_zeed< at >hotmail.com>Date: 2006-11-20 22:58:25

Comment11
มีเว็บน่าสนใจเกี่ยวกับ Shell Script มากมายครับ เช่น
tldp.org/LDP/abs/html/

นอกจากนี้ยังมีหนังสือ เช่น
Classic Shell Scripting by Arnold Robbins and Nelson H.F. Beebe

Learning the bash Shell (Nutshell Handbooks) by Cameron Newham and Bill Rosenblatt

ลอง search จากเว็บดูนะครับ
หวังว่าคงจะได้ตอบคำถาม
From:krerk <>Date: 2006-11-21 03:23:25

Comment12
Chto s holodami ne v lada. Aristides Albertina.
From:Aristides Albertina <istidabetina< at >zhk.net>Date: 2007-05-18 08:11:56

Comment13
MToik
From:None <cialis< at >froko1000.com>Date: 2007-06-10 17:08:10

Comment14
I try it
From:None <levitra< at >6548hjokoly.org>Date: 2007-06-10 17:08:10

Comment15
Great site. Keep doing.

where are you google? i miss you!
From:Unknown <saher< at >yahoo.com>Date: 2007-06-20 19:30:07

Comment16
Great site. Keep doing.

where are you google? i miss you!
From:Unknown <saher< at >gmail.com>Date: 2007-06-21 11:56:51

Comment17
Good work!
From:Good work!
<Good work!
>
Date: 2007-06-27 11:26:42

Comment18
Hi great site great work thank you!
From:Hi great site great <Hi great site great work thank>Date: 2007-06-27 12:10:27

Comment19
Hi great site great work thank you!
From:Hi great site great <Hi great site great work thank>Date: 2007-06-27 12:10:33

Comment20
Very interesting site. Hope it will always be alive!
From:Very interesting sit <Very interesting site. Hope it>Date: 2007-06-27 12:15:18

Comment21
Very good site. Thank you.
From:Very good site. Than <Very good site. Thank you.
>
Date: 2007-06-28 11:51:18

Comment22
I like this site!
From:I like this site!
<I like this site!
>
Date: 2007-06-28 13:04:27

Comment23
Hi great site great work thank you!
From:Hi great site great <Hi great site great work thank>Date: 2007-06-29 06:17:22

Comment24
Keep working!
From:Keep working!
<Keep working!
>
Date: 2007-06-29 08:28:12

Comment25
I like this site!
From:I like this site!
<I like this site!
>
Date: 2007-06-30 00:21:40

Comment26
Good work!
From:Good work!
<Good work!
>
Date: 2007-06-30 01:31:10

Comment27
,Qg==,LTE=,LTE=,,SUw=,LTE=,MzU=,MTg=,,
From:<Default> <cheap< at >swimplanet.org>Date: 2007-06-30 14:06:52

Comment28
I like this site!
From:I like this site!
<I like this site!
>
Date: 2007-06-30 14:47:36

Comment29
Good work!
From:Good work!
<Good work!
>
Date: 2007-06-30 15:47:56

Comment30
Very good site. Thank you.
From:Very good site. Than <Very good site. Thank you.
>
Date: 2007-06-30 16:47:20

Comment31
Beautifully crafted!
From:Beautifully crafted! <Beautifully crafted!
>
Date: 2007-06-30 17:55:38

Comment32
Great site. Keep doing.
From:Great site. Keep doi <Great site. Keep doing.
>
Date: 2007-07-01 05:35:36

Comment33
I like this site!
From:I like this site!
<I like this site!
>
Date: 2007-07-01 06:42:01

Comment34
Hi great work great site! visit my homepage thank you.
From:Hi great work great <Hi great work great site! visi>Date: 2007-07-01 07:48:12

Comment35
Hi great work great site! visit my homepage thank you.
From:Hi great work great <Hi great work great site! visi>Date: 2007-07-01 08:47:04

Comment36
Hi great site great work thank you!
From:Hi great site great <Hi great site great work thank>Date: 2007-07-01 20:13:20

Comment37
Keep working!
From:Keep working!
<Keep working!
>
Date: 2007-07-01 21:12:49

Comment38
Very interesting site. Hope it will always be alive!
From:Very interesting sit <Very interesting site. Hope it>Date: 2007-07-01 22:14:30

Comment39
Good work!
From:Good work!
<Good work!
>
Date: 2007-07-01 23:20:29

Comment40
Very good site. Thank you.
From:Very good site. Than <Very good site. Thank you.
>
Date: 2007-07-02 10:40:49

Comment41
If you have to do it, you might as well do it right
From:If you have to do it <If you have to do it, you migh>Date: 2007-07-02 12:48:03

Comment42
Great site. Keep doing.
From:Great site. Keep doi <Great site. Keep doing.
>
Date: 2007-07-02 13:56:31

Comment43
Great site. Keep doing.
From:Great site. Keep doi <Great site. Keep doing.
>
Date: 2007-07-03 00:42:38

Comment44
Good work!
From:Good work!
<Good work!
>
Date: 2007-07-03 01:50:46

Comment45
Great site. Keep doing.
From:Great site. Keep doi <Great site. Keep doing.
>
Date: 2007-07-03 03:03:56

Comment46
Great site. Keep doing.
From:Great site. Keep doi <Great site. Keep doing.
>
Date: 2007-07-03 16:48:00

Comment47
Very good site. Thank you.
From:Very good site. Than <Very good site. Thank you.
>
Date: 2007-07-03 17:48:29

Comment48
Beautifully crafted!
From:Beautifully crafted! <Beautifully crafted!
>
Date: 2007-07-04 05:48:23

Comment49
Beautifully crafted!
From:Beautifully crafted! <Beautifully crafted!
>
Date: 2007-07-04 06:47:23

Comment50
Great site. Keep doing.
From:Great site. Keep doi <Great site. Keep doing.
>
Date: 2007-07-04 07:47:08

Comment51
Very interesting site. Hope it will always be alive!
From:Very interesting sit <Very interesting site. Hope it>Date: 2007-07-04 19:42:12

Comment52
Hi great site great work thank you!
From:Hi great site great <Hi great site great work thank>Date: 2007-07-04 22:07:39

Comment53
Very good site. Thank you.
From:Very good site. Than <Very good site. Thank you.
>
Date: 2007-07-05 10:40:13

Comment54
Beautifully crafted!
From:Beautifully crafted! <Beautifully crafted!
>
Date: 2007-07-05 12:47:39

Comment55
If you have to do it, you might as well do it right
From:If you have to do it <If you have to do it, you migh>Date: 2007-07-05 13:55:25

Comment56
Great site. Keep doing.

p.s. Thank you google!!!
From:Great site. Keep doi <Great site. Keep doing.

p.s>
Date: 2007-07-05 16:36:00

Comment57
I like this site!

Thank you google!!!
From:I like this site!

<I like this site!

Thank you>
Date: 2007-07-05 20:43:36

Comment58
Beautifully crafted!

p.s. Thank you google!!!
From:Beautifully crafted! <Beautifully crafted!

p.s. T>
Date: 2007-07-05 23:21:28

Comment59
Beautifully crafted!

Thank you google!!!
From:Beautifully crafted! <Beautifully crafted!

Thank >
Date: 2007-07-06 00:08:33

Comment60
If you have to do it, you might as well do it right

p.s. Thank you google!!!
From:If you have to do it <If you have to do it, you migh>Date: 2007-07-06 02:35:24

Comment61
Keep working!

Thank you google!!!
From:Keep working!

Tha <Keep working!

Thank you goo>
Date: 2007-07-06 03:17:33

Comment62
If you have to do it, you might as well do it right

p.s. Thank you google!!!
From:If you have to do it <If you have to do it, you migh>Date: 2007-07-06 05:22:28

Comment63
Very interesting site. Hope it will always be alive!

Thank you google!!!
From:Very interesting sit <Very interesting site. Hope it>Date: 2007-07-06 06:01:52

Comment64
Very good site. Thank you.

p.s. Thank you google!!!
From:Very good site. Than <Very good site. Thank you.

>
Date: 2007-07-09 11:45:47

Comment65
Hi great work great site! visit my homepage thank you.

Thank you google!!!
From:Hi great work great <Hi great work great site! visi>Date: 2007-07-09 16:01:27

Comment66
Great site. Keep doing.

p.s. Thank you google!!!
From:Great site. Keep doi <Great site. Keep doing.

p.s>
Date: 2007-07-09 18:58:41

Comment67
Hi great work great site! visit my homepage thank you.
From:Hi great work great <Hi great work great site! visi>Date: 2007-07-09 23:13:39

Comment68
Hi great work great site! visit my homepage thank you.

p.s. Thank you google!!!
From:Hi great work great <Hi great work great site! visi>Date: 2007-07-10 00:33:55

Comment69
Very good site. Thank you.

Thank you google!!!
From:Very good site. Than <Very good site. Thank you.

>
Date: 2007-07-10 01:45:04

Comment70
Keep working!

Thank you google!!!
From:Keep working!

Tha <Keep working!

Thank you goo>
Date: 2007-07-10 06:32:57

Comment71
Keep working!

p.s. Thank you google!!!
From:Keep working!

p.s <Keep working!

p.s. Thank yo>
Date: 2007-07-10 10:20:39

Comment72
Hi great work great site! visit my homepage thank you.

Thank you google!!!
From:Hi great work great <Hi great work great site! visi>Date: 2007-07-10 11:15:38

Comment73
Great site. Keep doing.

p.s. Thank you google!!!
From:Great site. Keep doi <Great site. Keep doing.

p.s>
Date: 2007-07-10 15:55:17

Comment74
Hi great work great site! visit my homepage thank you.

Thank you google!!!
From:Hi great work great <Hi great work great site! visi>Date: 2007-07-10 16:55:26

Comment75
Keep working!

p.s. Thank you google!!!
From:Keep working!

p.s <Keep working!

p.s. Thank yo>
Date: 2007-07-10 21:08:25

Comment76
Beautifully crafted!

Thank you google!!!
From:Beautifully crafted! <Beautifully crafted!

Thank >
Date: 2007-07-10 22:15:13

Comment77
Good work!
From:Good work!
<Good work!
>
Date: 2007-07-11 01:39:17

Comment78
Beautifully crafted!

p.s. Thank you google!!!
From:Beautifully crafted! <Beautifully crafted!

p.s. T>
Date: 2007-07-11 02:46:48

Comment79
Very good site. Thank you.
From:Very good site. Than <Very good site. Thank you.
>
Date: 2007-07-11 06:47:29

Comment80
If you have to do it, you might as well do it right
From:If you have to do it <If you have to do it, you migh>Date: 2007-07-11 11:31:04

Comment81
Good work!

p.s. Thank you google!!!
From:Good work!

p.s. T <Good work!

p.s. Thank you g>
Date: 2007-07-11 12:49:35

Comment82
Very good site. Thank you.

Thank you google!!!
From:Very good site. Than <Very good site. Thank you.

>
Date: 2007-07-11 13:57:03

Comment83
คือผมต้องการให้ไฟล์ชื่อ file2 ทำงานหลังจากทำงานใน file1 เสร็จแล้วผมควรจะทำยังงัยดีคับ
From: <>Date: 2007-09-03 11:56:55

Comment84
ลองใช้ vi file1 file2 ได้ไหมค่ะ
เมื่อเราออกจากfile1
ก้อจะทำคำสั่งใน file2 ต่อ
ไม่ทราบว่าทำได้รึป่าวนะค่ะ
From: <>Date: 2007-09-03 16:20:53

Comment85
ไม่เข้าใจคำถามนะครับ

ถ้า file1 และ file2 เป็ฯโปรแกรม เช่น ls กับ pwd ก็ใช้ ls; pwd;


From:เกริก <>Date: 2007-09-03 21:12:36

Comment86
คือ file1 และ file 2 เป็นไฟล์คับ
ขอบคุณ ทุกท่านที่ช่วยตอบนะคับผม
From: <>Date: 2007-09-03 22:44:02

Comment87
ขอบคุณมากค่ะ
From:mm <>Date: 2007-09-17 08:51:26

Comment88
vi file1;vi file2
From: <>Date: 2007-09-20 15:47:49

Comment89
ขอบคุณครับ
กำลังเรียนอยู่เลย
From:Parinya <>Date: 2007-09-25 19:44:51

Comment90
Hello! Good Site! Thanks you! wqysbuxlkpus
From:jsyyqdjtxa <clrmc< at >vcvpcwn.com>Date: 2007-10-10 12:38:00

Comment91
ขอบคุณมากครับ
From:devil <>Date: 2007-10-27 15:15:48

Comment92
รบกวนถามครับ *--* ถ้าเราต้องการ Protect Process จากการ Kill หรือ ต้องมีการยืนยันก่อนการ kill จะทำอย่างไรได้บ้างครับ
From:พีพี <>Date: 2007-11-01 07:30:08

Comment93
ดีครับ ๆ น่าส่งเสริม
From:Ton <>Date: 2007-11-13 11:11:09

Comment94
ขอบคุณมากเลยค่า
From:หนูน้อย <>Date: 2008-05-19 14:28:08

Comment95
แจ่ม ๆ
From: <>Date: 2008-07-14 15:05:56

Comment96
แหล่มมาก ๆ
From:ก๊อป <opengltorun< at >hotmail.com>Date: 2008-07-14 15:06:38

Comment97
ขอบคุณครับ อาจารย์
From:hello <>Date: 2008-09-05 17:10:17

Comment98
Nice day,
From:WSiNOdCQlBZ <fzzsctiu< at >qqncfkou.com>Date: 2008-12-04 05:08:12

Comment99
Thanks ค่ะ
^^
From:P <>Date: 2008-12-05 18:23:17

Comment100
Thank you ka AJ
Nice! Website!!!!
From:Rainnie <Raina_j< at >hotmail.com>Date: 2008-12-29 12:23:05

Comment101
ผมอ่านตัวอย่าง เอ๊ะ ชื่อคุ้นๆ โอ้... อาจารย์เกริก (อีกแล้ว)
ขอบคุณครับอาจารย์ ผมกำลังทำงานเกี่ยวกับการเขียน Shell Script พอดี ^ ^
From:T <>Date: 2009-02-20 09:12:31

Comment102
เยี่ยมเลยค่ะ หามาทั้งคืน พึ่งเจอค่ะ



ขอบตุงตะ
From:ead <nun.kub< at >hotmail.com>Date: 2009-06-23 13:12:34

Comment103
ขอบคุณมากมายคะ
From:fluke <f_luk_e< at >hotmail.com>Date: 2009-07-17 15:17:37


ความเห็น:

โดย
Email:
** เนื่องจากปัญหา SPAM ความเห็นของคุณจะถูก post เมื่อได้รับการตรวจสอบจาก Administrator **