Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Lỗi khi truy cập đến từng phần tử trong array Shell Script

  1. #1
    Ngày gia nhập
    03 2010
    Bài viết
    80

    Mặc định Lỗi khi truy cập đến từng phần tử trong array Shell Script

    chào mọi người!
    mình có đoạn code sau để đọc từng dòng trong file text để hiển thị lần lượt tên từng kho đã lưu
    Code:
    	IFS=$'\n' DsKho=($(cat khohang.txt ))
    	for (( i=0; i<${#DsKho[@]}; i++ ));
    	do
    		echo "Kho thu $i"		
    		strarr=$DsKho[$i]
    		arr=$(echo $strarr | tr ";" "\n")
    		echo "Ten Kho: $arr[1]"
    		echo "----------------------------"
    	done
    cấu trúc file text
    Code:
    mk1;kho 1;kho cap 1;3;Admin
    mk2;kho 2;kho cap 1;3;Admin
    khi chạy mình không hiển thị được tên kho lên
    mình thử thay $arr[1] thành $arr[0]" thì nó hiển thị cả dòng "mk1 kho 1 kho cap 1 3 Admin" ra mà ko phải là "mk1"
    xin mọi người giúp đỡ.
    Đã được chỉnh sửa lần cuối bởi son0nline : 20-10-2014 lúc 04:17 PM.

  2. #2
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Thừ code này xem sao?

    Bash Code:
    1. while read record
    2. do
    3.     for i in $(echo "$record" | tr ";" "\n")
    4.     do
    5.         echo $i;
    6.     done
    7. done < khohang.txt
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  3. #3
    Ngày gia nhập
    03 2010
    Bài viết
    80

    Trích dẫn Nguyên bản được gửi bởi Kevin Hoang Xem bài viết
    Thừ code này xem sao?

    Bash Code:
    1. while read record
    2. do
    3.     for i in $(echo "$record" | tr ";" "\n")
    4.     do
    5.         echo $i;
    6.     done
    7. done < khohang.txt
    anh ơi em muốn truy cập từ phần từ cơ. cách này lại hiển thị hết ra rồi
    code cũ của em nếu chuyển thành
    Bash Code:
    1.     arr=$(echo $strarr | tr ";" "\n")
    2.     for j in $arr
    3.     do
    4.         echo $j;
    5.     done
    nó cũng hiển thị hết ra như vậy
    Đã được chỉnh sửa lần cuối bởi son0nline : 23-10-2014 lúc 12:03 PM.

  4. #4
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Thế code này thì có đúng ý không nhỉ?
    Bash Code:
    1. while read record
    2. do
    3.     arr=$(echo "$line" | tr ";" "\n");
    4.     printf "Ten kho: %s\n" ${arr[0]};
    5. done < khohang.txt
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  5. #5
    Ngày gia nhập
    03 2010
    Bài viết
    80

    Trích dẫn Nguyên bản được gửi bởi Kevin Hoang Xem bài viết
    Thế code này thì có đúng ý không nhỉ?
    Bash Code:
    1. while read record
    2. do
    3.     arr=$(echo "$line" | tr ";" "\n");
    4.     printf "Ten kho: %s\n" ${arr[0]};
    5. done < khohang.txt
    em chạy thử và nó thì vẫn không lấy được giá trị của "${arr[0]}", nó chỉ hiển thị 3 dòng "Ten kho: " (file khohang.txt của em có 3 dòng)
    em chạy trên ubuntu có khác gì ko ạ
    (mà hình như em thấy anh nhầm chỗ biến $line phải là $record chứ nhỉ)
    đúng rồi sửa $line thành $record thì được cảm ơn anh
    Đã được chỉnh sửa lần cuối bởi son0nline : 24-10-2014 lúc 10:14 PM.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn