/* scrip for google analytic */

Ads 468x60px

แสดงบทความที่มีป้ายกำกับ operating system/Linux แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ operating system/Linux แสดงบทความทั้งหมด

วันเสาร์ที่ 17 ตุลาคม พ.ศ. 2558

[Project] มาสร้าง point of sale ด้วย linux command และ java เปรียบเทียบกันเถอะ ตอนที่ 2

Introduction

พื้นฐานความรู้คอมพิวเตอร์ ระดับ กลาง-สูง *JAVA - OOP - Data Structure

สวัสดีครับ จากบทที่แล้ว ([Project] มาสร้าง point of sale ด้วย linux command และ java เปรียบเทียบกันเถอะ ตอนที่ 1 )ที่ได้แนะนำในเรื่อง การทำ Point Of Sale (POS) ด้วย linux command line (Bash) แบบง่ายๆกันไปในบทความนี้เราจะมาเริ่ม Advance กันเพิ่มอีกนิดนึง เพื่อหยักสมองที่ถี่ขึ้น จะให้เขียน Bash บ่อยๆก็รู้สึก ซ้ำซากจำเจ ไม่เกิดไอเดียใหม่ๆ ผู้สนใจท่านอื่นๆเป็นกันมั้ย ถ้าเราเป็นนักพัฒนา ต้องไม่หยุดเรียนรู้จริงมั้ยครับ 

ในบทความนี้ก็จะหันมาออกแบบ POS ด้วยภาษา Java กันบ้างโดยเอาโปรแกรมไปรัน บน command line เช่นเดิม แต่คงไม่ได้พัฒนาให้เหมือนกับบทความที่แล้ว ผู้เขียนหมายถึง จะพัฒนาฟังก์ชันเพิ่มขึ้นไปอีกนิดนึงโดยยังคงฟังก์ชันเดิมในบทความที่แล้วอยู่ สิ่งที่ผู้เขียนจะพัฒนาเพิ่มขึ้นนั้นก็คือ 

ขอบเขตงานที่เพิ่มขึ้น (Requirment)

1. ทำให้โปรแกรมสามารถป้อนสินค้า Item ได้หลายครั้ง
2. ทำให้โปรแกรมมีโครงสร้างข้อมูลเพื่อเก็บ ข้อมูลสินค้าโดยใช้ Linked List (หมายเหตุ* วิธีนี้ไม่สามารถเก็บข้อมูลได้อย่างถาวร เอามาใช้งานจริงเพื่อเก็บ ข้อมูลสินค้าไม่ได้ ในบทความนี้เป็นกรณีศึกษาเท่านั้น)


จากบทที่แล้ว ผู้เขียนได้ เขียนโค๊ดไว้แค่สามารถป้อน สินค้าได้เพียงสินค้าตัวเดียว ไม่สามารถป้อนสินค้ามาคำนวนได้ หลายๆตัว และยังจะออกแบบ สร้างในส่วนของการเก็บข้อมูลสินค้า เช่น สินค้า A ราคา 10 บาท เป็นต้น และยังจะทำให้สามารถดูรายชื่อ สินค้าไว้ก่อนได้ อีกด้วย

ก่อนอื่นมาศึกษาทฤษฏีกันสักเล็กน้อยดีกว่า... ผู้สนใจบางท่านอาจจะไม่เข้าใจว่าศัพท์บางอย่างคืออะไร ทำไมต้องมี ดังนี้ครับ

ทฤ๋ษฏีที่เกี่ยวข้อง

Data structure - link list

อย่างที่ได้กล่าวไปในตอนต้นว่ามันคือโครงสร้างข้อมูล เป็นพื้นฐานของการเขียนโปรแกรม ซึ่งมีความสำคัญก็คือ "เป็นวิธีการและขั้นตอนการแก้ปัญหาต่างๆ โดยใช้คุณสมบัติและความสามารถของโครงสร้างข้อมูล เป็นวิชาหลักในการเรียนของสาขาคอมพิวเตอร์"

โครงสร้างข้อมูล (Data Structure) คือ การจัดการข้อมูลในหน่วยความจำภายในเครื่องคอมพิวเตอร์ หรือในบางครั้งเป็นการจัดการข้อมูลในดิสก์ ให้มีความสัมพันธ์กันภายในกลุ่มข้อมูล รูปแบบการเก็บข้อมูลที่อยู่ในรูปแบบโครงสร้างข้อมูล เช่น อาร์เรย์(Array), ลิงค์ลิส (Link-list), สแตก (Stack) เป็นต้น 

ในที่นี้ผู้เขียน ขอยกวิธีการสร้างโครงสร้างข้อมูลแบบ Link-list มาประยุกษ์ใช้ 



ผู้ที่สนใจจะศึกษาจากหนังสือเล่มไหนก็ได้ แต่ผู้เขียนศึกษาจากเล่มนี้ครับ    จึงขอแนะนำ เพราะผู้เขียนหนังสือเล่มนี้อธิบายขั้นตอนและคำสั่งแต่ละบรรทัดได้เป็นอย่างดี เข้าใจง่ายดีครับ

จริงๆแล้ว ก็หา code ได้ทั่วไปจาก website ต่างประเทศครับ  ลองทำความเข้าใจกับเว็บประเทศก็เป็นข้อดีในเรื่องของภาษา แต่ยังไงซะถ้า ผู้เขียนมีไอเดียเกี่ยวเรื่องนี้ จะเขียนแยกไปเป็นอีกบทความแล้วกันครับ

คราวนี้มาดูกันครับว่าจะออกแบบแตกต่างจาก เดิม มีอะไรเพิ่มขึ้นบ้างจาก โฟว์ชาร์ตด้านล่าง



ร่วมสนับสนุนนักเขียนด้วยการคลิ๊กลิ้ง ด้านล่าง ขอบคุณครับ รับรองไม่มีไวรัส



ขั้นตอนการออกแบบ








  Code

import linklist.*;

  
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.Scanner;

public class javaPOSSLT1 {

    Node newNode;
    static Node head ;
    static Node curr;
    Node prev;
   
   
    //เพิ่มโหนดในลิ้งลิสท์
    public void add(Object newItem,Object newPrice,Object newAmount){
        if(head==null){
            newNode = new Node(newItem, newPrice, newAmount);
        }
        else {
            newNode = new Node(newItem, newPrice, newAmount, head);
        }
        head = newNode;
    }
   
    //ค้นหาข้อมูลในลิ้งลิสซ์
   
    public boolean searchItem(Object item, Object price, Object amount){
        curr = head ;
        prev = null ;
        boolean status = false;
       
        while(curr != null){
            Object[] Arr = null;
            if(curr.getItem() == Arr){
                status = true;
                break;
            }else{
                prev = curr;
                curr = curr.getNext();
            }
        }
       
        if(status){
            return true;
        }else{
            return false;
        }
    }
   
    //ลบข้อมูลในลิส
    public void deleteNode(Object item, Object price, Object amount){
        if(searchItem(item, price, amount)){
            if(prev == null){
                head = curr.getNext();
            }else{
                prev.setNext(curr.getNext());
            }
        }else{
            System.out.println("Not found Item");
        }
    }
   
    //แทรกโหนดในลิส
    public void insert(Object iteminsert, Object newItem,Object newPrice,Object newAmount){
        newNode = new Node(newItem, newPrice, newAmount );
        if(searchItem(iteminsert, newPrice, newAmount)){
            if(prev == null){
                newNode.setNext(curr);
                head = newNode;
           
            }else {
                newNode.setNext(curr);
                prev.setNext(newNode);
            }   
        }else{
            if (head == null){
                newNode.setNext(curr);
                head = newNode;
               
            }else if(curr == null){
       
            prev.setNext(newNode);
            }
        }
    }
   
    //แสดงข้อมูลในลิส
    public Object[] showdata(){
        Object[] Arr = null;
        curr = head;
        while (curr != null){
           
            Arr = curr.getItem();
            System.out.print(Arr[0]);
            System.out.print("         " + Arr[1]);
            System.out.print("            " + Arr[2]);
            System.out.println();
            System.out.println();
            curr = curr.getNext();
        }
        System.out.println();
       
        return Arr ;
    }
   
public static Object calculate_sum(){
    int sum_new = 0;
    int sum = 0;
   
    curr = head;
    while (curr != null){
        Object[] Arr = null;
        Arr = curr.getItem();
        int pre = Integer.valueOf((String)Arr[1]); // แปลง object ให้เป็น integer
        int suf = Integer.valueOf((String)Arr[2]);
        sum_new = pre * suf;
        curr = curr.getNext();
        sum = sum + sum_new;
    }
   
    System.out.println();
   
    return sum;

}


public static Object calculate_change(int money){
int sum_new = 0;
int sum = 0;
int change = 0;

curr = head;
while (curr != null){
    Object[] Arr = null;
    Arr = curr.getItem();
    int pre = Integer.valueOf((String)Arr[1]); // แปลง object ให้เป็น integer
    int suf = Integer.valueOf((String)Arr[2]);
    sum_new = pre * suf;
    curr = curr.getNext();
    sum = sum + sum_new;
    change = money - sum;
}

System.out.println();

return change;

}

public static Object calculate_net(){
   
    double net = 0;
    double sum = 0;
   
    int sum_new = 0;
   
    curr = head;
    while (curr != null){
        Object[] Arr = null;
        Arr = curr.getItem();
        int pre = Integer.valueOf((String)Arr[1]); // แปลง object ให้เป็น integer
        int suf = Integer.valueOf((String)Arr[2]);
        sum_new = pre * suf;
        curr = curr.getNext();
        sum = sum + sum_new;
        net = (sum/1.07);
    }
   
    System.out.println();
   
    return net;
   
}

public static Object calculate_vat(){
   
    double net = 0;
    double sum = 0;
    double vat = 0;
   
    int sum_new = 0;
   
    curr = head;
    while (curr != null){
        Object[] Arr = null;
        Arr = curr.getItem();
        int pre = Integer.valueOf((String)Arr[1]); // แปลง object ให้เป็น integer
        int suf = Integer.valueOf((String)Arr[2]);
        sum_new = pre * suf;
        curr = curr.getNext();
        sum = sum + sum_new;
        net = (sum/1.07);
        vat = sum - net ;
    }
   
    System.out.println();
   
    return vat;
   
}
   
    static int plus = 0;
    static int money = 0;
       
    public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException{
       
        javaPOSSLT1 Item = new javaPOSSLT1();
       
        System.out.println("ยินต้อนรับเข้าสู่โปรแกรม POS By SheepCode Version1.2");
   
        System.out.print("คุณต้องการเพิ่มข้อมูลสินค้าหรือไม่ ?");
        Scanner y = new Scanner(System.in);
        String yes = y.nextLine();
       
        while(plus != 1){       
       
            if (yes.equals("yes")){
           
            // ชื่อสินค้า
            System.out.println("กรุณาป้อนชื่อสินค้า");   
            System.out.print("ชื่อสินค้า :");   
            Scanner i = new Scanner(System.in);
            String item = i.nextLine();
           
            System.out.println("กรุณาป้อนราคาสินค้า");   
            System.out.print("ราคาสินค้า :");   
            Scanner p = new Scanner(System.in);
            String price = p.nextLine();
           
            System.out.println("กรุณาป้อนจำนวนสินค้า");   
            System.out.print("จำนวนสินค้า :");   
            Scanner a = new Scanner(System.in);
            String amount = a.nextLine();
           
            Item.add(item,price,amount);
                       
        }
            System.out.print("คุณต้องการเพิ่มข้อมูลอีกหรือไม่ ?");
            Scanner z = new Scanner(System.in);
            String zes = y.nextLine();
           
            if (zes.equals("yes")){
                plus = 0;
            }else{
                plus = 1;
            }   
                           
        }
       
        System.out.println("ป้อนเงินที่รับจากลูกค้า");   
        System.out.print("จำนวน :");   
        Scanner m = new Scanner(System.in);
        int money = m.nextInt();
           
        System.out.println("NAME   : Sheep Code Service");
        System.out.println("BRANCH : Sheep baby");
        System.out.println("TEL    : 02-123-4567");
        System.out.println("NUMBER : ID9999999999");
        System.out.println("RECEIP : SKLSheepCode");
        System.out.println();
        System.out.println("ชื่อสินค้า              " +"ราคาสินค้า                  "+"จำนวนสินค้า");       
        Item.showdata();
               
        System.out.print("ราคารวม :          " +  calculate_sum()+ "          บาท");
        System.out.print("ราคาสุทธิ :          " +  calculate_net()+ "          บาท");
        System.out.println("ภาษี:                   " +  calculate_vat()+ "          บาท");
        System.out.print("เงินที่ได้รับจากลูกค้า:                   " +  money + "          บาท");
        System.out.print("เงินทอน :            " +  calculate_change(money)+ "          บาท");
       
        PrintWriter writer = new PrintWriter("test.txt", "UTF-8");
        writer.println("NAME   : Sheep Code Service");
        writer.println("BRANCH : Sheep baby");
        writer.println("TEL    : 02-123-4567");
        writer.println("NUMBER : ID9999999999");
        writer.println("RECEIP : SKLSheepCode");
        writer.println("ชื่อสินค้า              " +"ราคาสินค้า                  "+"จำนวนสินค้า");
        Object Arr[] = Item.showdata();
        curr = head;
        while(curr != null){
        Arr = curr.getItem();
        writer.print(Arr[0]);
        writer.print("         " + Arr[1]);
        writer.println("           " + Arr[2]);
        curr = curr.getNext();
        }
        writer.println("ราคารวม :          " +  calculate_sum()+ "          บาท");
        writer.println("ราคาสุทธิ :          " +  calculate_net()+ "          บาท");
        writer.println("ภาษี:                   " +  calculate_vat()+ "          บาท");
        writer.println("เงินที่ได้รับจากลูกค้า:                   " +  money + "          บาท");
        writer.println("เงินทอน :            " +  calculate_change(money)+ "          บาท");
       
        writer.close();
       
    }
   
}   



ผลการทดลอง

ภาพด้านล่างนี้เป็น ผลจากการรันโปรแกรม ผ่าน IDE ถ้าหากผู้ที่สนใจอยาก รันภาพ command line ก็สามารถ ใช้คำสั่ง javac เพื่อ compile โปรแกรมก่อนได้ ผลออกมาดังนี้



ร่วมสนับสนุนนักเขียนด้วยการคลิ๊กลิ้ง ด้านล่าง ขอบคุณครับ รับรองไม่มีไวรัส








จาก โค๊ดได้สร้างส่วนของการ Export file เป็น test.txt ดังภาพด้านล่าง


ผลลัพท์อกมาดังนี้






สรุปผล

จากบทที่แล้ว พัฒนาโปรแกรม ทำได้แค่ใส่ข้อมูลสินค้า เพียงชิ้นเดียว ในบทนี้ได้พัฒนาเพิ่มเติมออกมาให้สามารถใส่ข้อมูลเพิ่มขึ้นได้ หลายชิ้นเพิ่มมากขึ้นโดย ใช้โครงสร้างข้อมูลเข้ามาช่วยในการเก็บข้อมูล เพื่อนำมาเข้าคำนวนก็ได้แก่ Linklist และ array ซึ่งผู้เขียนประยุกษ์ code ที่ได้จากหนังสือที่แนะนำไป โดยความสามารถของ java สามารถเรียกไฟล์ Linklist ได้จาก package เดียวกัน
  ในบทความถัดไปจะ พัฒนาเพิ่มเติม ดัง FlowChart ด้านล่าง หากผู้ที่สนใจมีไอเดียที่ดีกว่าก็ เอามาแบ่งปัน แบ่งกันดูก็ได้นะครับ 

สิ่งที่เพิ่มขึ้น ได้แก่

1. สามารถเพิ่มข้อมูลสินค้าได้
2. สามารถเรียกดูสินค้าที่เราเพิ่มเอาไว้ได้
3. เรียกสินค้าตาม ID และ ใส่แค่จำนวน สินค้าเท่านั้น







Reference

บทความนี้ ไม่มีอ้างอิงฮ่ะ มีแต่หนังสือโครงสร้างข้อมูลอย่างเดียวด้านบน

วันอังคารที่ 13 ตุลาคม พ.ศ. 2558

[Project] มาสร้าง point of sale ด้วย linux command และ java เปรียบเทียบกันเถอะ ตอนที่ 1

introduce

สวัสดีครับ ในบทความนี้เป็นบทความประยุกษ์ใช้ คำสั่งต่างๆที่ได้เขียนแนะนำเอาไว้ในลิ้งบทความด้านล่างนี้ ถ้าใครที่ยังไม่ได้อ่าน ลองเข้าไปอ่านกันนะครับ

"Writing your first script" วิธีเขียนสคลิป Linux command บทที่ 1
"Writing your first script" วิธีเขียนสคลิป Linux command บทที่ 2
"Writing your first script" วิธีเขียนสคลิป Linux command บทที่ 3

รอติดตาม "Writing your first script" วิธีเขียนสคลิป Linux command บทที่ 4 ด้วยนะครับ

สำหรับบทความนี้บังเอิญ ผู้เขียนได้ไอเดียขณะที่เข้าไปรับประทานอาหารที่ร้านอาหารฟาสฟูดแห่งหนึ่ง ซึ่งไม่อาจจะเอ่ยชื่อได้ว่า แมคโดนัล

หลังจากที่ได้สั่งอาหารมานั่งทาน ผู้เขียนก็นั่งมองๆ กระดาษที่ให้มาพร้อมเงินทอน ที่เรียกว่า ใบเสร็จรับเงิน แล้วก็ลองอ่านๆ ข้อความในกระดาษไปพร้อมกับกินอาหารแก้หิว แล้วก็เห็นอยู่คำๆหนึ่งว่า POS ก็เลย ปิ้งไอเดียว่า อยากจะทำอะไรขึ้นมาทันที

บทความนี้จะลองออกแบบต้นแบบของโปรแกรม POS กัน จริงๆแล้วผู้เขียนก็ไม่เคยทำโปรเจคกับอุปกรณ์ ฮาร์ดแวร์หรือซอร์ฟแวร์แต่อย่างใด อาจจะทำส่วนที่ติดต่อกับดาต้าเบสแบบง่ายๆ แต่จะไม่มีการติดต่อกับอุปกรณ์ฮาร์ดแวร์ตัวอื่นๆ แต่ถ้าบทความเป็นที่สนใจมีคนรีเควสมาเยอะก็อาจจะพยายามหามาเขียนเป็น ตอนสอง ตอนสามต่อ เช่น ติดต่อกับดาต้าเบสยังไง ใช้data structor&algorithm แบบไหน เชื่อมต่อกับอุปกรณ์ยิงบาร์โค๊ดยังไง ผู้เขียนแค่ เพ้อไว้ก่อน อาจจะทำไม่ได้ก็ได้ (เขียนไปเขียนมาได้ไอเดียสร้างข้อมูลที่ไม่ต้องติดต่อกับดาต้าเบสไว้ลองเขียนบทถัดไป)^^

เอาเป็นว่ามาลองออกแบบโปรแกรมและเทคโนโลยีที่มีอยู่เกลื่อนกลาดตลาดไปพร้อมๆกันนะครับ ถือว่าได้เรียนรู้สำหรับมือใหม่แบบผู้เขียนและผู้ที่สนใจท่านอื่นๆก็แล้วกัน จะได้นำไปต่อยอดกับเทคโนโลยีในยุคนี้ได้อีกด้วย เช่น android ,IOS จะได้ไม่ต้องไปซื้อกับฝรั่งมังคราซะหมด แต่ก่อนอื่น มาศึกษากันก่อนว่า POS คืออะไร



ร่วมสนับสนุนนักเขียนด้วยการคลิ๊กลิ้ง ด้านล่าง ขอบคุณครับ รับรองไม่มีไวรัส



point of sale คืออะไร

Point of sale แปลตรงตัวเลย คือ จุดขาย หรือจุดชำระเงิน โดยโปรแกรมอะไรก็ได้แล้วแต่ นักพัฒนาจะประดิษฐ์ รูปร่างหน้าตา ความสวยงาม ความสะดวกสบาย ฟังก์ชันครบครัน ตามงบประมาณ ใช้เว็บ ใช้แอพพลิเคชั่น ใช้ embedded system บลา ๆ ๆ ๆ ก็ตามใจโปรแกรมเมอร์ เอ้ย...ผู้ว่าจ้าง เลยครับ โปรแกรมเมอร์ใจดีก็อาจจะทำให้ฟรีก็ได้(เหรอออ)นะครับ

ผู้เขียนเอง ก็จะทำแบบงบน้อยนี้แระ ไม่น่าใช้ แต่ก็ประสิทธิภาพนะเออ...

ระบบนี้ก็แบ่งเป็นสองส่วนมี ฮาร์ดแวร์ และ ซอร์ฟแวร์

ในส่วนของซอร์ฟแวร์ ก็ อาจจะมี ดาต้าเบสไว้เก็บข้อมูลสินค้า และ หรือหน้าตา GUI (graphic User Interface)




 ในส่วนฮาร์ดแวร์ ก็มี 

คอมพิวเตอร์ สแกนบาร์โค๊ด จอภาพ เครื่องพิมพ์ ลิ้นชัก ต่างๆนานา

ขออธิบายสั้นๆ เพราะ เรฟเฟอร์เรนไว้หมดแล้ว...

บริษัทอะไรบ้างที่ใช้ pos

จากที่ได้ซื้อของ....ก็ไม่ค่อยเยอะไม่ค่อยแยะสักเท่าไรเพราะ แฟนผู้เขียนเก็บหมด เหอๆ ก็จากที่ได้รวบรวมและมโนเองว่ามีบริษัทอะไรบ้างก็มีดังนี้


 Mr. Jones


Bonchon chicken


Mcdonal

ร้านอาหารทั่วไป หรือ....7-11, Lotus, Big-C, ร้านขายยา,ร้านขายของชำ และอื่นๆ

จากที่ได้วิเคราะห์ ข้อมูลที่ได้จากใบเสร็จแล้วสามารถ แจกแจง ออกมา ซึ่งตัวแปรต้องมีอะไรบ้างที่อยู่ในใบเสร็จ ได้ดังนี้

ตัวแปรข้อมูลในใบเสร็จ

ชื่อร้านหรือชื่อบริษัท
รหัสผู้เสียภาษี
เบอร์โทร
สาขา
ผู้รับเงิน
คนรับออเดอร์
หมายเลขเครื่อง
เวลาที่ดำเนินการ
จำนวนของสินค้า
ราคาของสินค้า
ราคารวมของสินค้า
ค่าสุทธิของราคาสินค้า
ภาษี
เงินที่รับจากลูกค้า
เงินทอน

ตัวแปรเหล่านี้ ขึ้นอยู่กับประเภทของธุรกิจครับ

จากที่ได้วิเคราะห์ตัวแปรต่างๆที่ระบุไว้ สามารถแบ่งออกได้ 2 กลุ่ม ดังนี้

1. ตัวแปรคงที่ คือเป็นข้อมูลที่เอาไว้แสดงผลให้ลูกค้ารับรู้และไว้เป็นหลักฐาน เช่น ชื่อร้าน, สาขา, หมายเลขเครื่อง, รหัสผู้เสียภาษี, เบอร์โทร, เวลาที่ซื้อสินค้า เป็นต้น

2. ตัวแปรแปรผัน คือตัวแปรที่เปลี่ยนแปลงได้ขึ้นอยู่กับผู้ป้อนข้อมูล แล้วนำมาคำนวน เช่น จำนวนสินค้า, ราคาสินค้า, ราคารวม, ค่าสุทธิ, ภาษี, เงินที่รับจากลูกค้า, เงินทอน เป็นต้น

ดังนั้นตัวแปรเหล่านี้จึงต้องเอามาคำนวนด้วยคำสั่งต่างๆที่เกี่ยวข้องโดยมีคำสั่งที่สำคัญดังนี้



ร่วมสนับสนุนนักเขียนด้วยการคลิ๊กลิ้ง ด้านล่าง ขอบคุณครับ รับรองไม่มีไวรัส



ขั้นตอนการออกแบบ








code

#!/bin/bash

###constants

NAME="NAME : Sheep Code Service"
BRANCH="BRANCH : Sheep baby"
TEL="TEL : 02-123-4567"
NUMBER="NUMBER : ID9999999999"
RECEIP="RECEIP : SKLSheepCode"
RIGHT_NOW=$(date +="%x %r %z")

header="\n %-10s %8s %10s \n"
footer="\n %-10s %8s %10s \n"
format=" %-12s %05d %10s \n"
width=43

#Function

POS_CAL_NET(){
_TOTAL=$(POS_CAL_SUM)
bc <<< "scale = 2; ($_TOTAL / 1.07)"
}

POS_CAL_SUM(){
declare -i TOTAL
TOTAL=$value*$amount
echo $TOTAL
}

POS_CAL_VAT(){
_TOTAL=$(POS_CAL_SUM)
_NET=$(POS_CAL_NET)
bc <<< "scale = 2; ($_TOTAL - $_NET)"
}

POS_CAL_CHANGE(){
_TOTAL=$(POS_CAL_SUM)
declare -i change
change=$reciep-$_TOTAL
echo $change
}

#Main

# INPUT FROM USER

echo "ยินต้อนรับเข้าสู่โปรแกรม POS By SheepCode"
echo "กรุณาป้อนชื่อสินค้า"
echo -n "ชื่อสินค้า : "
read nameItem
echo "กรุณาป้อน จำนวนสินค้า"
echo -n "จำนวนสินค้า : "
read amount
echo "กรุณาป้อนราคาสินค้า"
echo -n "ราคาสินค้า : "
read value
echo -n "เงินที่ได้รับ : "
read reciep

# DISPLAY
#cat <<- __EOF__
divider===============================
divider=$divider$divider
printf "%$width.${width}s\n" "$divider" >> POS.txt
echo -e "$NAME \n$BRANCH \n$TEL \n$NUMBER \n$RECEIP \nTIME$RIGHT_NOW" >> POS.txt
printf "%$width.${width}s\n" "$divider" >> POS.txt
printf "$header" "ITEM NAME" "amount" "PRICE" >> POS.txt
printf "%$width.${width}s\n" "$divider" >> POS.txt
printf "$format" $nameItem $amount $value >> POS.txt
printf "%$width.${width}s\n" "$divider" >> POS.txt
printf "$footer" "Total" "$(POS_CAL_SUM)" "บาท" >> POS.txt
printf "$footer" "NET" "$(POS_CAL_NET)" "บาท" >> POS.txt
printf "$footer" "VAT" "$(POS_CAL_VAT)" "บาท" >> POS.txt
printf "$footer" "CASH" "$reciep" "บาท" >> POS.txt
printf "$footer" "CHANGE" "$(POS_CAL_CHANGE)" "บาท" >> POS.txt
printf "%$width.${width}s\n" "$divider" >> POS.txt
#__EOF__

ผลการทดลอง

จากโค๊ดด้านบน โปรแกรมจะแบ่งเป็น 4 ส่วน คือ
1. ประกาศตัวแปร
   สร้างข้อความเพื่อเอาไว้แสดงผล
2. ฟังก์ชัน
   ทำหน้าที่คำนวนค่าต่างๆ
3. รับค่า
   ทำหน้าที่รับค่าจากผู้ใช้
4.แสดงผล
   ทำหน้าที่ปริ้นออกมาแสดงผลทางหน้าจอ หรือ ปริ้นสร้างไฟล์ไปเก็บไว้เพื่อรอปริ้น

จะเห็นว่า ในส่วนของแสดงผล จะนำข้อความที่ print ออกมา ไว้ที่ไฟล์

  
ใช้คำสั่ง cat อ่านไฟล์ ออกมาได้ภาพด้านล่าง




ร่วมสนับสนุนนักเขียนด้วยการคลิ๊กลิ้ง ด้านล่าง ขอบคุณครับ รับรองไม่มีไวรัส




สรุปผล

ในบทความนี้เป็นตอนที่ 1 ก็ได้ทำการออกแบบระบบ POS แบบง่ายๆขึ้นมาก่อน ในบทความต่อไปก็ผู้เขียนคิดว่า จะพัฒนาต่อให้สามารถ ปริ้นไฟล์ที่สร้างขึ้นในทันที และ สร้างที่เก็บข้อมูลเป็นโครงสร้างข้อมูล(data structor) เพื่อเก็บข้อมูลสินค้าเอาไว้เรียกใช้ และที่สำคัญที่สุด จะทำให้สามารถป้อน สินค้าได้หลายๆ ครั้ง ถ้าลองทำตามจะสังเกตว่า สามารถป้อนสินค้าได้แค่บรรทัดเดียว ในส่วนของคำสั่งต่างๆ ที่ไว้ใช้คำนวนหรือ แสดงผล จะขอยกไปเขียนในบทความของ Linux Command ในตอนหน้าก็จะพัฒนากับภาษา java ลองดูว่าจะเขียนง่ายกว่ากันหรือไม่ โปรดติดตามกันด้วยนะครับ

credit of picture 
http://pointofsale.com/Retail-point-of-sale-software-single-store/POS-Prophet-Systems.html
https://utaiacademy.files.wordpress.com/2014/06/de22d-screenshot2012-07-27at1-13-45am.png?w=538&h=342 

reference
https://en.wikipedia.org/wiki/Point_of_sale
https://utaiacademy.files.wordpress.com/2014/06/de22d-screenshot2012-07-27at1-13-45am.png?w=538&h=342
http://linuxconfig.org/bash-printf-syntax-basics-with-examples 
http://stackoverflow.com/questions/12147040/division-in-script-and-floating-point

วันพฤหัสบดีที่ 8 ตุลาคม พ.ศ. 2558

[LINUX+JAVA] " วิธี execute และ run โปรแกรมภาษา java กับ command line ที่เราเขียนไม่ง้อ bash”

ระดับผู้อ่าน ด้านความรู้คอมพิวเตอร์ ระดับ กลาง
 
" วิธี execute และ run โปรแกรมภาษาjava กับ command line ที่เราเขียนไม่ง้อ bash” 


ผู้เขียนรู้สึก เขียนเรื่องเดิมๆแล้วเริ่ม มาลองหาเรื่องอื่นเสริมความรู้จากเรื่องอื่นมาเพิ่มพูนไปทีละขั้นๆ ให้คล้ายๆกับการต่อ จิ้กซอ (Jigsaw) หรือ คล้ายกับ คาร์นอจ์แม็พ (Karnaugh map) ที่เริ่มหาความรู้ไปทีละอย่างๆ แล้วมาต่อๆกันจนกว้างขึ้นๆ นะครับ




ในบทความที่แล้ว พูดถึงเรื่อง การเขียน shell script ถึงบทที่ 3 แล้วว่าจะเขียนต่อแต่ยังไม่ได้เริ่ม เพราะรู้สึกอยากเขียนเรื่องที่สนใจอยู่ในตอนนี้ก่อน กันลืม เผื่อให้ผู้เขียนเองเนี่ยกลับมาอ่านทบทวน เอาล่ะ เรามาเริ่มกันเลยดีกว่า กับหัวข้อว่า " วิธี execute และ run โปรแกรมภาษาjava กับ command line ที่เราเขียนไม่ง้อ bash” 



บทความนี้ก็จะมาเขียน ในเรื่องของ ภาษา java ครับ เป็นอีกภาษาหนึ่งที่ผู้เขียนสนใจ เพราะว่าเป็นภาษาที่สามารถเขียนลงได้หลาย platform ก็ถือว่าเป็นข้อดีของภาษา java เอาล่ะในบทความนี้ บังเอิญว่าผู้เขียนมีความสงสัยว่าจะทำอย่างไรให้สามารถ รันโปรแกรมที่เขียนขึ้นมารันบน console ของ โปรแกรม IDE เนี่ย สามารถ รันบน Command line ได้บ้างมั้ย ด้วยความที่ผู้เขียนก็ไม่ได้เชียวชาญอะไร แต่ด้วยใจรักก็ศึกษาประดับเป็นความรู้เอาไว้



ร่วมสนับสนุนนักเขียนด้วยการคลิ๊กลิ้ง ด้านล่าง ขอบคุณครับ รับรองไม่มีไวรัส




ผู้ที่สนใจหรือผู้ถนัดในภาษา java อาจจะทราบกันอยู่แล้ว อาจจะง่ายสำหรับท่าน โปรดข้ามไปได้เลยครับ อย่ามาเสียเวลาเพราะผู้เขียนจะอธิบายค่อนข้างละเอียด เพื่อที่อ่านจะได้เข้าใจ อาจจะเยิ่มเย้อเลยก็ได้ เอ้า...

มาดูต่อ

นี้เป็นconsole ในใช้โปรแกรม๋ JAVAEE  IDE ที่ใช้ภาษา JAVA เขียน แล้ว RUN ออกมาครับ



ถ้าอยากจะเอามารันบน shell บ้างล่ะทำยังไง เพราะโดยปกติ ก็ต้องใช้ Echo, df, ping ที่ทำงานบน shell ได้
มาดูตัวอย่างกันครับ  ผมยกตัวอย่าง ง่ายๆก่อน ก็หนีไม่พ้น สวัสดีชาวโลก อีกเช่นเคย Hello World!
ตัวอย่าง โปรแกรม


public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World");
    }
}



ขั้นตอนการทำ

1.สร้างโปรเจคใหม่ขึ้นมา 


 

2. create class ใหม่




3. ใส่ code




คร่าวนี้เราได้ไฟล์ java กันมาแล้วครับ คราวนี้เราไปจัดไฟล์ที่ shell กัน





ทำความเข้าใจกับ step ภาพด้านบนนะครับ ผู้เขียนจะอธิบายทีละบรรทัด
1. เข้าไปใน path ที่สร้างไฟล์ java เอาไว้
2. ใช้คำสั่ง javac โดยใช้ option -d หมายถึง จะ generate ไฟล์ class ไว้ที่ folder ไหนขึ้นอยู่กับ path ที่ใส่
3. ใช้คำสั่ง java แล้ว nameClass หรือ ชื่อไฟล์ java ที่สร้างไฟล์ขึ้นมา



ร่วมสนับสนุนนักเขียนด้วยการคลิ๊กลิ้ง ด้านล่าง ขอบคุณครับ รับรองไม่มีไวรัส



อีกทริคหนึ่งที่จะเอามาใช้ในการรันไฟล์ ได้ สร้าง bash script ขึ้นมา 1 file  



ต่อจาก step ที่ 3 นะครับ
4. สร้างไฟล์ ขึ้นมาด้วยชื่ออะไรก็ได้ ผู้เขียนใช้ helloscript
5. ตั้ง permission ให้กับไฟล์ bash script
6. reletive path ./ ไฟล์ที่สร้างขึ้นมา ได้ Hello, World

สามารถ สร้างไฟล์สคลิปที่สร้างด้วย ภาษา java ได้แล้ว
ผมจะให้ดูตัวอย่างสักเล็กน้อยเพื่อเปรียบเทียบ



ต่างมั้ยครับ 1 บรรทัด เสร็จไม่ต้องทำอะไรให้ซับซ้อนด้วย ผู้ที่สนใจอาจจะสังเกตุว่า ใช้ภาษา java พิมพ์ตั้งหลายบรรทัด แล้วจะลำบากเรียนรู้ไปทำไม เพราะ ถ้าจะรัน บน shell แล้วใช้คำสั่ง Echo Hello world! ก็จบแล้ว
คำตอบ คือ  ผู้เขียนคิดว่า การที่เราใช้ภาษาได้หลายๆภาษาก็ถือว่าเราได้เปรียบกว่าคนอื่น อย่างเช่น การสมัครงาน
สมมติว่า ถ้าเราเป็นแต่ bash script เราก็ไม่สามารถ จะทำงานอื่นๆได้อย่างสะดวก เช่น การเขียนเว็บไซต์ เป็นต้น ฉะนั้น หากผู้ที่เขียน java เป็นก็อาจจะได้เปรียบกว่า คนอื่นสามารถที่จะรับงานได้หลากหลาย
เอาเป็นจะยกตัวอย่างอีกตัวอย่างหนึ่ง สำหรับ ภาษา java  สร้างคำสั่ง PING 




ผู้ที่สนใจถ้าเป็นผู้ใช้ windowsจะสังเกตุได้ว่า จะได้ t = 3 เท่านั้น แต่ถ้าเป็น mac,*Nux ก็ ping -t ไปเรื่อยๆ ก็จะทำให้เห็นความแตกต่าง ด้วย code โปรแกรมนี้ ภาษา java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ExecuteShellComand {

    public static void main(String[] args) throws IOException, InterruptedException {

        String command = "ping -c 3 www.google.com";

        Process proc = Runtime.getRuntime().exec(command);

        // Read the output

        BufferedReader reader = 
              new BufferedReader(new InputStreamReader(proc.getInputStream()));

        String line = "";
        while((line = reader.readLine()) != null) {
            System.out.print(line + "\n");
        }

        proc.waitFor();  

    }
ทำเหมือนกับ ตัวอย่างที่ผ่านมาเลยครับ



1. genarate class


2. ใช้ java Run ในบรรทัดนี้จะแตกต่างจากตัวอย่างที่ผ่านมา คือ มี Folder shell ก่อน src ดังนั้น เวลารันไฟล์ก็จะใส่ path ก่อนถึงไฟล์ class
จะไม่ขออธิบาย ตัวอย่าง code โปรแกรมนี้นะครับ จะขออธิบายเป็น class library ของ java ในบทความ ถัดๆไป

หวังว่าจะเป็นประโยชน์อย่างดียิ่งนะครับ สำหรับบทความนี้ บทความคราวหน้าอาจจะลองสอนทำเครื่องมือทดสอบระบบเครือข่ายคอมพิวเตอร์ บางอย่างด้วยภาษา java , python , หรือ อื่นๆ ลองติดตามกันดูนะครับ



CREDIT PICTURE

http://arjarnbomb.blogspot.com/2014_02_01_archive.html


REFFERENCE
http://stackoverflow.com/questions/17973970/how-to-solve-java-lang-noclassdeffounderror
http://stackoverflow.com/questions/15356405/how-to-run-a-command-at-terminal-from-java-program
http://alvinalexander.com/java/edu/pj/pj010016
http://www.dreamincode.net/forums/topic/223614-how-to-create-a-shell-script-to-compile-and-execute-a-java-file/
http://www.cs.sjsu.edu/web_mater/cs46b/cs46blab/shellScripting1.html
http://www.mkyong.com/java/how-to-execute-shell-command-from-java/

วันพุธที่ 30 กันยายน พ.ศ. 2558

"Writing your first script" วิธีเขียนสคลิป Linux command บทที่ 3


ระดับผู้อ่าน : ความรู้ด้านคอมพิวเตอร์ *น้อย-ปานกลาง   

หมายเหตุ : ให้ลองทำตามไปด้วยในบางส่วน
สวัสดี ครับ บทความนี้เพื่อเป็นการแชร์ประสบการณ์ที่เคยศึกษา และรวบรวมข้อมูลการเขียนสคลิปนำมาบันทึกเอาไว้ทบทวนเวลาลืมคำสั่งหรือเทคนิค ไปนะครับโดยศึกษาจากเว็บไซต์ต่างประเทศต่างๆรวบรวมเอาไว้ ส่วนmainหลักเว็บไซต์ที่จะเอามาเขียน ก็จะเอาเว็บไซต์ linuxcommand เอา มาเป็นหลักเพราะผมรู้สึกว่า อ่านเว็บไซต์นี้แล้ว ค่อนข้างนำคำสั่งที่จำเป็นและใช้บ่อยมาสอน ส่วนถ้าเป็น  Tip เล็กๆน้อยๆต่างๆก็จะอ้างอิงเอาไว้ให้ผู้ที่สนใจ ติดตามกันไปถ้าอยากศึกษาใน เวอร์ชั่นอังกฤษ

จากบทที่แล้วบทที่ 2 ได้กล่าวถึงวิธีการต่างๆเบื้องต้น ในการสร้างไฟล์ เก็บไฟล์ไว้ที่ไหนถึงจะใช้งานได้ 

 ทำ อะไรให้กับระบบไฟล์ของ linux จึงจะใช้งานไฟล์ที่เราเขียนขึ้นมาได้อย่างสมบูรณ์ รวมถึง Execute ไฟล์นั้นทำอย่างไรไปแล้ว ถ้าผู้ที่สนใจยังไม่ทราบ ก็ลองย้อนกลับไปอ่าน ก่อนได้ครับ

 


ส่วน ในบทนี้จะกล่าวถึง คำสั่งที่สำคัญ คำสั่งหนึ่งที่เอาไว้ใช้เขียน script อย่างเป็นประจำก็คือ echo และพูดถึงตัวแปรที่ใช้ใน script และ ค่าคงที่ ครับ พร้อมยกตัวอย่างและผลลัพท์ ให้ลองทำตามดูได้ครับ เรามาเริ่มกันเลย 

echo 

คำสั่ง echo เป็นคำสั่งที่ทำหน้าที่แสดงผล ในส่วนของ Argument ที่เราทำการป้อนเข้าไปในหนึ่งบรรทัดพร้อมทั้ง ขึ้นบรรทัดใหม่ให้ทันที




 
เปรียบเทียบ ได้กับการส่งเสียงออกไปแล้วสะท้อนกลับมา (รูปภาพเป็นการยกตัวอย่าง ไม่ใช่ซะทีเดียว ) คำสั่งการแสดงผลไม่ได้มีแต่ echo เพียงอย่างเดียวเท่านั้น ยังมีคำสั่ง print อีกด้วยแต่ความสามารถไม่เหมือนกัน มีข้อแตกต่างไปตามการใช้งาน จะอธิบายให้ฟังในภายหลัง ลองดู man ด้านล่างกันก่อน





ร่วมสนับสนุนนักเขียนด้วยการคลิ๊กลิ้ง ด้านล่าง ขอบคุณครับ รับรองไม่มีไวรัส




root@root:~# help echo
echo: echo [-neE] [arg ...]
    Write arguments to the standard output.
    
    Display the ARGs, separated by a single space character and followed by a newline, on the standard output.
    
    Options:
      -n do not append a newline
      -e enable interpretation of the following backslash escapes
      -E explicitly suppress interpretation of backslash escapes
    
    `echo' interprets the following backslash-escaped characters:
      \a alert (bell)
      \b backspace
      \c suppress further output
      \e escape character
      \E escape character
      \f form feed
      \n new line
      \r carriage return
      \t horizontal tab
      \v vertical tab
      \\ backslash
      \0nnn the character whose ASCII code is NNN (octal) NNN can be 0 to 3 octal digits
      \xHH the eight-bit character whose value is HH (hexadecimal).  HH can be one or two hex digits
    
    Exit Status:
    Returns success unless a write error occurs.


ในบรรทัด echo: echo [-neE] [arg ...] ก็เทียบได้กับ 
รูปแบบการใช้คำสั่ง echo [options] [string, variables...] นี้

ก็ขึ้นกับว่าจะใช้ option อะไรและ รหัสคำสั่งพิเศษอะไร(escape character)เพื่อให้เหมาะสมกับงาน


OPTION  
- n คือ ทำให้ผลลัพท์ไม่ต้องขึ้นบรทัดใหม่
- e คือ ทำให้ตัวแปรภาษา(interpreter)สามารถใช้ escape  character ได้
- E คือ ทำให้ยกเลิก escape character โดยที่จะต้องใส่ escape character และ arg ไว้ใน "..." (Quotes) ด้วย

ตัวอย่างลองนำไปประยุกษ์ได้เลย

\a  เมื่อใส่แล้วจะเกิดเสียง

root@root:~# echo -e "abcd \a efg"
abcd  efg
\b backspace 1 ครั้ง
root@root:~# echo -e "abcd \befg"
abcdefg
\c ตัดข้อความหลังจาก \c ทิ้งทั้งหมด
root@root:~# echo -e "abcd \c efg"
abcd root@root:~# 
 
\e เป็น escape character
root@root:~# echo -e "abcd \e efg"
abcd   efg
 
\E เป็น escape character
root@root:~# echo -e "abcd \E efg"
abcd   efg
 
\f การขึ้นหน้าใหม่
root@root:~# echo -e "abcd \f efg"
abcd 
      efg
 
\n การขึ้นบรรทัดใหม่
root@root:~# echo -e "abcd \n efg"
abcd 
 efg
 
\r carriage return คือ กลับไปเริ่มต้นใหม่
root@root:~# echo -e "abcd \r efg"
 efg 
 
\t เว้นวรรคแนวนอน ประมาณ 6 เคาะ
root@root:~# echo -e "abcd \t efg"
abcd   efg
 
\v เว้นวรรคแนวนอน
root@root:~# echo -e "abcd \v efg"
abcd 
      efg
 
\\ ใส่ backslash
root@root:~# echo -e "abcd \\ efg"
abcd \ efg
 
\0nnn ใส่รหัสascii ฐาน 8 โดยเปลี่ยนค่าที่ nnn
root@root:~# echo -e "abcd \0100 efg"
abcd @ efg
root@root:~# echo -e "abcd \0444 efg"
abcd $ efg
root@root:~# echo -e "abcd \0555 efg"
abcd m efg
 
\xHH ใส่ 8-bit character ฐาน 16 โดยเปลี่ยนค่าที่ HH
root@root:~# echo -e "abcd \x23 efg"
abcd # efg
root@root:~# echo -e "abcd \x25 efg"
abcd % efg
root@root:~# echo -e "abcd \x27 efg"
abcd ' efg
root@root:~# echo -e "abcd \x28 efg"
abcd ( efg

คำ สั่ง echo เป็นเพียงแค่โปรแกรมการแสดงผลเท่านั้น ไม่สามารถนำมาประมวลผลทางคณิตศาสตร์ได้ เป็นการแสดงข้อความออกมาให้อ่าน แสดงค่าสตริงในตัวแปร การใส่ข้อความสร้างเป็นไฟล์ เป็นต้น


Example แสดงข้อความ



 
ผมจะยกตัวอย่างงานหนึ่ง ถ้าเป็นสมัยก่อนก็อาจจะมีประโยชน์พอสมควร สมัยนี้ก็ไม่แน่ ถ้ามีวิธีดัดแปลงก็อาจจะมีประโยชน์ก็ได้ 

ถ้า สมมติว่าคุณเป็นนักเขียนเว็บ หรือเป็นโปรแกรมเมอร์อะไรก็ตามแต่ส่วนใหญ่เป็นคนขี้เกียจแน่นอน ขี้เกียจพิมพ์อะไรซ้ำๆบ่อยๆ จำเจ ชอบทำอะไรใหม่ๆ เอาเวลาไปเรียนรู้สิ่งใหม่ๆดีกว่า จริงๆมั้ยครับ ไม่งั้นจะมาเป็นโปรแกรมเมอร์ทำไม :D 



ร่วมสนับสนุนนักเขียนด้วยการคลิ๊กลิ้ง ด้านล่าง ขอบคุณครับ รับรองไม่มีไวรัส





สมมติว่าอยากสร้างเว็บเพจขึ้นมาเพจหนึ่ง โดยเพียงคลิ๊กเดียวขึ้นทำอย่างไร ถ้าที่เห็นเลย โปรแกรม IDE หลายตัวต้องมีแน่นอน ปุ่ม "FILE"



ไม่ใช่ นี่มัน ฟาย.....
กด สร้างไฟล์ใหม่ขึ้นจากโปรแกรม 

 

จากภาพด้านบนก็จะได้ ไฟล์ html ออกมา
เช่นกันครับ ที่เราจะทำกันก็เป็นแบบนีี้ แต่ทำอย่างไรมาดูกัน

html ตัวอย่าง

<html>
<head>
    <title>
    The title of your page
    </title>
</head>

<body>
    Your page content goes here.
</body>
</html>
 
เมื่อเอามาใช้ร่วมกับ Echo แล้วเขียนเป็น Scriptจะได้แบบนี้
 
#!/bin/bash

# sysinfo_page - A script to produce an html file

echo "<html>"
echo "<head>"
echo "  <title>"
echo "  The title of your page"
echo "  </title>"
echo "</head>"
echo ""
echo "<body>"
echo "  Your page content goes here."
echo "</body>"
echo "</html>"  
 
หรืออีกวิธี ไม่จำเป็นต้องใช้ Echo ทุกบรรทัด 

#!/bin/bash

# sysinfo_page - A script to produce an HTML file

echo "<html>
 <head>
   <title>
   The title of your page
   </title>
 </head>
 
 <body>
   Your page content goes here.
 </body>
 </html>"


วิธีสร้างไฟล์โดยไม่ต้อง create file ที่หน้า desktop


จะใช้คำสั่ง echo ร่วมกับ character > และ >>


โดยมีข้อแตกต่างกับดังนี้


> เป็นการ save ทับไฟล์เดิม ถ้ายังไม่มี ก็จะสร้างไฟล์ขึ้นใหม่
>> เป็นการ เพิ่มข้อความเข้าไปในไฟล์เดิมถ้ายังไม่มี ก็จะสร้างไฟล์ขึ้นใหม่


ลองทำความเข้าใจกับภาพด้านล่างดูนะครับ 



หรือยังมีอีกวิธี คือ การเขียน script ใช้กับคำสั่ง cat 

โดยคำสั่ง cat นี้จะมีหน้าที่
1.แสดงผลข้อความที่อยู่ใน file บน screen terminal
2.ก็อปปี้ ข้อความของไฟล์ได้
3.การรวมไฟล์
4.การสร้างไฟล์ใหม่






cat filename
cat options filename
cat file1 file2
cat file1 file2 > newcombinedfile  
 
ตามลำดับ ก็ให้นำไฟล์ที่สร้างขึ้นมาเขียนแบบนี้ก็ได้ 
 
#!/bin/bash

# sysinfo_page - A script to produce an HTML file

cat << _EOF_
<html>
<head>
    <title>
    The title of your page
    </title>
</head>

<body>
    Your page content goes here.
</body>
</html>
_EOF_

 
EOF คืออะไร 
  ย่อมาจาก End Of File ซึ่งจะทำให้รู้ว่า ไฟล์สิ้นสุดที่ตรงไหน 
ถ้าไม่มี EOF จะเป็นยังไงกันล่ะ ดังภาพด้านล่างครับ
 


 
มันจะขึ้นข้อความว่า 
 
./textfile2.html: line 17: warning: 
here-document at line 5 delimited by 
end-of-file (wanted `_EOF_') 
 
จะต้องใส่ให้เรียบร้อย 
(Tip&Trick)
(.) dot เป็นสัญลักษณ์บ่งบอกให้ shell รู้ว่าไฟล์ของ path ปัจจุบันนั้นจะถูก execute ก็คือ ถ้าเราต้องการจะ exe ไฟล์ที่ทำการอนุญาตให้สามารถ รันได้ จะต้องใส่part ไว้ด้านหน้าชื่อไฟล์ เช่น /testfile.html ดังนั้นถ้าเราต้องการจะรันไฟล์นั้นๆก็ให้ใส่ dot ลงไปด้วย ก็คือ ./testfile.html
 
ความแตกต่างระหว่าง คำสั่ง echo กับ printf 
ทั้ง สองคำสั่งนี้ล้วนใช้ในการแสดงผล ทั้งสองคำสั่ง เท่าที่ศึกษาเขามันแตกต่างตรงที่ echo มีความเร็วในการแสดงผลมากกว่า เพราะไม่ต้องมาคำนวนผล แต่ส่วน
ความแตกต่างของ printf จะใช้คำสั่งแบบมีรูปแบบดังตัวอย่างด้านล่าง เหมือนกันใช้ในภาษา c


vech="Car"
printf "%s\n" $vech
printf "%1s\n" $vech
printf "%1.1s\n" $vech
printf "%1.2s\n" $vech
printf "%1.3s\n" $vech
printf "%10.3s\n" $vech
printf "%10.1s\n" $vech
no=10
printf "%d\n" $no
big=5355765
printf "%e\n" $big
printf "%5.2e\n" $big
sales=54245.22
printf "%f\n" $sales
printf "%.2f\n" $sales
 
 
 


ร่วมสนับสนุนนักเขียนด้วยการคลิ๊กลิ้ง ด้านล่าง ขอบคุณครับ รับรองไม่มีไวรัส



สรุปบทความ

ใน บทความนี้ก็จะกล่าวถึง การใช้ echo ในการแสดงผลต่างๆ สามารถนำมาใช้การเขียนสคลิปเพื่อแสดงผลออกให้เห็นเอาต์พุตที่เราต้องการ พร้อมยกตัวอย่างให้เห็นว่าถ้าเอาไปสร้างโปรแกรม จะเอาไปใช้เพื่ออะไร และยังมีตัวอย่างให้ลองทำตามดู เพื่อความเข้าใจและมีภาพประกอบแสดงผลลัพธ์ให้เห็น กระทั่งยังมีอีกคำสั่ง ก็คือคำสั่ง cat ที่ใช้ในการอ่านไฟล์ รวมข้อความของทั้งสองไฟล์ได้ การใช้คำสั่งทั้งสองนี้ ขึ้นอยู่กับวัตถุประสงค์ครับ
บทความในครั้งถัดไป จะเขียนถึงเรื่อง การสร้างตัวแปรและค่าคงที่ กฎการตั้งชื่อ และ Environment Variablesต่างๆ , การนำคำสั่งมาใช้ร่วมกับการเขียน script, shell function และ การใช้ if 
ในส่วนของ tip&trick ครั้งถัดไป

Relative Path, shell แต่ละแบบ ครับ

credit of picture




Reference

http://www.unix.com/shell-programming-and-scripting/36980-differenc-between-print-echo.html 

http://www.computerhope.com/unix/uecho.htm 

http://bash.cyberciti.biz/guide/Echo_Command

http://www.cyberciti.biz/faq/howto-use-cat-command-in-unix-linux-shell-script/
 
 
Blogger Templates