ข้ามไปที่เนื้อหาหลัก

shell script

Function
#!/bin/bash
#!/bin/bash
function test {
   echo "test $1 $2 $3";
}
test a b c
 
Inner Function
$ outerfunc1() {
> innerfunc() { echo "Running inner function #1"; }
> echo "Running outer function #1"
> }
$ outerfunc2() {
> innerfunc() { echo "Running inner function #2"; }
> echo "Running outer function #2"
> }
$ # At this point, both outerfunc1 and outerfunc2 contain definitions of
$ # innerfunc, but since neither has been executed yet, the definitions
$ # haven't "happened".
$ innerfunc
-bash: innerfunc: command not found
$ outerfunc1
Running outer function #1
$ # Now that outerfunc1 has executed, it has defined innerfunc:
$ innerfunc
Running inner function #1
$ outerfunc2
Running outer function #2
$ # Running outerfunc2 has redefined innerfunc:
$ innerfunc
Running inner function #2

ref : http://stackoverflow.com/questions/8426077/how-to-define-a-function-inside-another-function-in-bash

: NOOP : No-op command
it's exit status is true (0)
http://unix.stackexchange.com/questions/37473/what-is-the-utility-of-the-command-in-shell-scripting-given-that-it-explicitl

exit N
exit 0 : normal shell exit
ref: http://bash.cyberciti.biz/guide/Exit_command

If
 if [[ true = true ]]; then
  echo "y";
 elif [[ true = false ]]; then
  :; 
 else
  echo "n";
 fi
 
Case
case "$1" in
whatever|whatever2)

;; 
*)

;; 
esac



For
for (( ; $#; )); 
do
$1
done

for A in "1 2 3"; do
 echo $A # 1 2 3 
done 
echo $A # 1 2 3
for A; do
    $A
done

Local variable
local var1 var2=()
var2 = empty array
Options : -i : make NAMEs have the "integer" attribute -a : make NAMEs indexed arrays (removing with +a is valid syntax, but leads to an error message) ref : http://unix.stackexchange.com/questions/202302/variable-definition-in-bash-using-the-local-keyword , http://wiki.bash-hackers.org/commands/builtin/declare  

Dollar sign
$@ : all of the parameters passed to the script
Example :
If you call `./someScript.sh` foo bar then `$@` will be equal to `foo bar`.
ref : http://stackoverflow.com/questions/9994295/what-does-mean-in-a-shell-script

$# : number of args
ref : http://stackoverflow.com/questions/5163144/what-are-the-special-dollar-sign-shell-variables

&2
echo "hey" >&2
print hey to &2:stderr

ref : http://stackoverflow.com/questions/23489934/echo-2-some-text-what-does-it-mean-in-shell-scripting

[[ ]],  (( ))

 ref : https://robots.thoughtbot.com/the-unix-shells-humble-if
, http://mywiki.wooledge.org/BashFAQ/031

[[ -d "/path" ]] : check if directory exists
[[ ! -d "$DIRECTORY" ]] : check if directory does not exists
[[ -r "/path" ]] : is read-only
[[ -x "/path" ]] : is executable
ref : http://stackoverflow.com/questions/59838/check-if-a-directory-exists-in-a-shell-script
, http://www.freeos.com/guides/lsst/ch03sec02.html

&&, ||
&& will only be evaluated if the exit status of the left side is zero
|| will evaluate the right side only if the left side exit status is nonzero

ref : http://unix.stackexchange.com/questions/24684/confusing-use-of-and-operators

shift
shift is a bash built-in which kind of rotates the arguments. Given that the arguments provided to the script are 3 available in $1, $2, $3, then a call to shift will make $2 the new $1. a shift 2 will shift by two makeing new $1 the old $3.
ref : http://unix.stackexchange.com/questions/174566/what-is-the-purpose-of-using-shift-in-bash-scripts

pushd, popd : directory stack
ref : http://unix.stackexchange.com/questions/77077/how-do-i-use-pushd-and-popd-commands

Read
read from stdin
-a : read the data word-wise into the specified array .
Example : use read to split string

read -r col1 col2 col3 <<< "one two three" 
printf "col1: %s col2: %s col3 %s\n" "$col1" "$col2" "$col3"
Example : changing seperator by using IFS variable
IFS=":" 

or
read -a VARNAME <<< "whatever whatever"
or
echo "press any key to continue"
read -s -n 1 -p

read from file
exec 3<$FILE # redirect file to FD 3
while read -u 3 -r line
do
 echo $line
done

or

while read -u 3 line
do
    command1
    command2
done 3< <(tail -f /path/file.txt)


ref : http://wiki.bash-hackers.org/commands/builtin/read
, http://bash.cyberciti.biz/guide/Reads_from_the_file_descriptor_%28fd%29
, http://stackoverflow.com/questions/27352868/bash-file-descriptor-3-and-while-read-line
$PWD
present working directory

Array
${ARR_NAME[@]} 
If quoted, @ expands to all elements individually quoted.
Example :
for v in "${ARR_NAME[@]}" do
$v
done 
unset ARRAY[N] : Destroys the array element at index N
http://wiki.bash-hackers.org/syntax/arrays

Int
i++
Find -or
find /path/ -name '*.png' -or -name '*.jpg'
mkdir -p -p Will create nested directories, but only if they don't exist already.
mkdir -p /foo/bar/baz  # creates bar and baz within bar under existing /foo
http://superuser.com/questions/165157/what-does-mkdir-p-flag-do

[[:alnum:]_]
letter, digit, or underscore
Example
If [[ $X != [[:alnum:]_] ]]

eval
eval - construct command by concatenating arguments

foo=10 x=foo
y='$'$x
echo $y # $foo
eval y='$'$x
echo $y # 10

ref : http://unix.stackexchange.com/questions/23111/what-is-the-eval-command-in-bash

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

วิธีการไป อย. กระทรวงสาธารณสุขจากหัวลำโพง

ทางไป : รถไฟฟ้า MRT หัวลำโพง ไปลงที่ สถานี กระทรวงสาธารณสุข  ถ้ากดที่ตู้ต้องเปลี่ยนไปหน้าจอสายสีม่วง สนน ราคา 48 53 บาท ต่อมอไซด์ ถ้าไป อย. 20 บาท จากหน้าทางเข้า  ถ้าฝนตกแนะนำให้โบกแท็กซี่จากข้างหน้า ข้างในหาแท็กซี่ยากมาก ถ้าจะเดินประมาณ 2.4 km ให้ระวังหลงเข้าไปรพ ศรีธัญญา รพ ศรีธัญญาพื้นที่ข้างในใหญ่มาก และเหมือนจะล้อมด้วยคลอง เหมือนจะมีทางออกแค่ทางที่เข้าไปนั่นแหละ ทางกลับ : รถเมล์ 97 จาก อย. ตรงข้ามประกันสังคม ทางที่ 1 : ถ้าจะใกล้ลงหน้าปากซอยขึ้นสายสีม่วงที่สถานีกระทรวงสาธารณสุขที่เดิม ทางที่ 2 : ผ่าน ท่าน้ำนนท์​ กลับเรือได้ ทางที่ 3 : ผ่านหน้าพระจอมพระนครเหนือด้วยนะ ผ่าน สถานีรถไฟฟ้า MRT บางซื่อ  ( จาก อย. ไป MRT บางซื่อ 17 บาท,  จาก MRT บางซื่อ ไป MRT หัวลำโพง 44 บาท นั่งกลับได้ 2 ทาง ทางหัวลำโพง กับ ไปเปลี่ยนที่ท่าพระ ไม่รู้ว่าทางไหนเร็วกว่ากัน ) ทางที่ 4 :  ผ่าน สะพานควาย  ทางที่ 5 :  นั่งถึงอนุสาวรีย์ชัยสมรภูมิได้ ค่ารถเมล์ 21 บาท ค่ารถไฟฟ้าไป BTS สะพานตากสิน 47 บาท 

วิธีใช้ ubuntu ต่อ อินเทอร์เน็ตทรู ( true ) โดยโมเด็ม billion bipac 7000 usb adsl modem

ก็อปไฟล์ cxacru-fw.bin ไปที่ /lib/firmware ไฟล์ cxacru-fw.bin download ได้ที่นี่ ก็อปไฟล์ br2684ctl ไปที่ /usr/sbin ไฟล์ br2684ctl download ได้ที่นี่ $ sudo pppoeconf nextๆ ไปเรื่อยๆ ใส่ username, password ของทรู ตามปกติ แล้วเขียนไฟล์ดังนี้ true.sh #!/bin/sh modprobe cxacru modprobe br2684 sudo /usr/sbin/br2684ctl -b -c 0 -a 0.100 # Communicating over ATM 0.0.100, encapsulation: LLC sudo ifconfig nas0 up pon dsl-provider # Plugin rp-pppoe.so loaded เสร็จแล้วสั่ง รัน shell script $ . ./true.sh คราวต่อไปรัน . ./true.sh อย่างเดียวก็ได้แล้วๆ reference : siamgeek บทความอื่นๆเกี่ยวกับ ubuntu

แจก คัมภีร์ ไบเบิล ภาษาไทย รวมเล่ม ( download thai bible pdf version )

แปลกใจว่า ทำไม ไม่มี ebook พระคัมภีร์ ที่สามารถ print อ่านได้เลย เลยเอา พระคัมภีร์ภาษาไทย ฉบับ KJV ( Thai Bible King James Version ) มาเย็บรวมเล่ม สร้างไว้เฉพาะ พันธสัญญาเดิม ( Old Testament ) ดาวน์โหลดได้จาก Thai Bible ย้ายแล้วจ้า ย้ายมา อันนี้ จะยัดลง iPhone หรือ iPod Touch ก็ได้ เพราะว่า มันอ่าน pdf ได้อยู่แล้ว จาก iBook ง่าย และ ฟรี ไม่ต้อง crack โปรแกรมให้ผิดศีล ถ้าไม่ชอบรูปแบบยังไง checkout มาแล้ว compile latex เองได้เลย จัดรูปแบบสวยงามแล้ว commit กลับมา จักเป็นพระคุณยิ่ง NOTE: ถ้าท่านต้องการสนับสนุนเรา ท่านสามารถดาวน์โหลด App ของเราได้ทางมือถือ Android ที่ App Words of God เนื้อหาจะเป็นเนื้อหาเดียวกันกับที่แจกฟรีนี้  ซึ่งใน App ท่านสามารถศึกษาพระคัมภีร์ได้แบบ Offline ซึ่งสามารถใช้งานได้โดยไม่ต้องต่ออินเตอร์เน็ต ท่านสามารถพกไปที่ไหนก็ได้ นอกจากนี้ ใน App ท่านสามารถ Search เพื่อค้นหาพระคัมภีร์ได้ และ ใน App เราไม่ได้เก็บข้อมูลใดๆ ของท่าน (เช่น การติดตามว่าท่านอ่านหน้าไหน, การติดตามว่าท่านค้นหาอะไร)  เดิมทีเราเองทำไว้ให้ทุกท่านสามารถเข้าถึงได้ฟรีทางเว็ปไซท์  ที่นี

เลขฐานสอง ติดลบ เรื่องที่อาจจะลืมกันไปแล้ว

คอมพิวเตอร์ใช้การเปิดปิด หลอดสุญญากาศ ดังนั้นค่าที่เป็นไปได้คือ 0 กับ 1 ไม่มีติดลบ จึงกำหนดให้ใช้ 2's complement มากำหนดเลขลบ วิธีทำคือ เปลี่ยนเลข 1 เป็น 0 เปลี่ยนเลข 0 เป็น 1 แล้ว บวกหนึ่ง เช่น 1 คือ 00000001 เปลี่ยนเป็น 11111110 บวก 1 ได้ 11111111 บิตที่อยู่หน้าสุดจะบอกว่าเป็นเลขบวกหรือลบ ( 0 = +, 1 = -) พิสูจน์ จาก สมการคณิตศาสตร์​ 1 + (-1) = 0 00000001 + ???????? = 0 00000001 + (11111110 + 000000001 ) = 0 นั่นเอง วิธีที่ง่ายกว่านั้นในการทำ 2's complement คือ 1. หา 1 ตัวสุดท้าย 010100 1 2. invert ตัวหน้า 1 ทั้งหมด 101011 1 สำหรับคนที่ลืมไปแล้ว 1's complement คือเปลี่ยนเลข 1 เป็น 0 เปลี่ยนเลข 0 เป็น 1 ตามปกติ เช่น ~1 1 = 00000001 ~1 = 11111110 ซึ่งมีค่าเท่ากับ -2 ที่มา : วิชาการดอทคอม , wikipedia

เทคนิคคิดเลขเร็วโดยใช้ วิธีคิด แบบ เวทคณิต ( Vedic Mathematics example )

จากที่สงสัยเรื่อง ลูกคิด ของ จินตคณิต ที่ลองไปค้นดู ปรากฎว่า เจอ เวทคณิต ซึ่งเขาบอกว่า อยู่ในคัมภีร์พระเวท ลองอ่านดูแล้ว รู้สึกว่าฝึกสมอง ก็ทำให้คิดเลขเร็วดี เลยสรุปมาให้ ตามนี้ Tutorial 1 การลบเลข ALL FROM 9 AND THE LAST FROM 10 ทุกตัวลบจาก 9 และตัวสุดท้ายลบจาก 10 เช่น 1000 - 357 = 643 10,000 - 1,049 = 8951 ถ้า 1,000 - 83 ให้มองว่ามี 0 อยู่ข้างหน้า เป็น 1,000 - 083 = 917 ฝึกบ่อยๆ ก็คล่อง แล้วก็ไม่ต้องใช้เครื่องคิดเลขด้วย ลองทำดูสิ 1) 1000 - 777 = 2) 1000 - 283 = 3) 1000 - 505 = 4) 10,000 - 2345 = 5) 10,000 - 9876 = 6) 10,000 - 1011 = 7) 100 - 57 = 8) 1000 - 57 = 9) 10,000 - 321 = 10) 10,000 - 38 = 3,000 - 467 ก็ทำเหมือนกัน โดยลบตัวแรกสุดของ 3,000 ไป 1 จากนั้นก็ทำเหมือนเดิม จะได้ว่า 3,000 - 467 = 2,533 Tutorial 2 VERTICALLY AND CROSSWISE สำหรับตัวเลขที่น้อยกว่าฐานนิดหน่อย ลอง 88x98 88 น้อยกว่า 100 อยู่ 12 98 น้อยกว่า 100 อยู่ 2 12x2 = 24 88-2 หรือ 98-12 ได้ 86 ดังนั้นตอบ 8,624 ดูอีกตัวอย่าง หรือ ลองทำนี่ดู 1) 87 x 98 = 2) 88 x

สอบสัมภาษณ์ MBA คำถามและการเตรียมตัว

 * “แนะนำตนเอง” การแนะนำตนเองไม่ใช่แค่บอกชื่อ-นามสกุล ตำแหน่งงาน สถานที่ทำงาน หรือ ประวัติการศึกษาเท่านั้น ข้อมูลเหล่านี้ต้องพูดถึง แต่ไม่ใช่ประเด็นสำคัญ ส่วนที่สำคัญในการแนะนำตนเองก็คือต้องขายความเป็นตัวตนของเรา ความสามารถของเรา และ/หรือวัตถุประสงค์ในการเลือกเรียนหลักสูตรนี้  พยายามตอบคำถามให้สอดคล้องกับ MBA ไม่ต้องนาน ประมาณ 2–3 นาที เน้นเนื้อ ไม่เน้นน้ำ ซ้อมพูดเยอะๆ ถือว่าเป็น First Impression * ทำไมจึงเลือกสมัครเข้าเรียนหลักสูตรนี้  ทำไมถึงมาเรียน MBA ทำไมอยากเรียน MBA ทำไม อยากเรียนตอนนี้  * ทำไม ต้องเรียน MBA ที่นี่ -- ลองศึกษา Program ของมหาลัยที่จะไปดูน้าว่ามหาลัยมีอะไรเด่น * คิดว่าถ้าเรียน MBA จะมี Challenge อะไรบ้าง * สนใจโปรแกรมอะไรบ้าง * หลังเรียนจบอยากทำอะไร * ต้องการอะไรจากหลักสูตรนี้  เรียนแล้วคิดว่าจะได้อะไร เอาไปใช้อะไรในชีวิต * ทำไมไม่เรียนสาขาอื่น ถ้าอายุงานถึงเรียนอย่างอื่นได้ * ในองค์กรที่ทำงานอยู่สามารถเติบโตได้ถึงตำแหน่งไหน * Performance ปัจจุบันเป้นยังไง  * ดูดีอยู่แล้ว แล้วมาเรียน MBA ทำไม เพราะงานที่ทำอยู่ก็มีโกาสก้าวหน้าในสายอาชีพบริหารอยู่แล้ว * ไม่ได้เรียนม

[ Netflix ] สาธุ รีวิวแบบไม่สปอยส์

ตัวละคร เดียร์ ตอนแรกก็ไม่ค่อยชอบ จากคาแรกเตอร์บางอย่าง ถ้าเลาเป็นพระปั๊บก็คงแวปขึ้นมาหลายซีนว่าเป็นลุงอ่ำใส่วิก แต่ดูๆ ไปกลับเป็นชอบ จากคาแรกเตอร์วัยรุ่นสร้างตัว ทำโน่นทำนี่ได้เองซะงั้น พระเทศน์จริงๆ ควรเทศน์อย่างพระดล เพราะเนื้อหาในพระพุทธศาสนาก็น่าสนใจในตัวเองอยู่แล้ว #เราเอง เคยฟังพระพุทธทาสภิกขุ เทศน์เรื่องแก่นแท้ของพระพุทธศาสนาที่สรุปให้ฟังสั้นๆมาก่อนแล้ว รู้สึกว่ามีพลัง   ใครยังไม่เคยดู ดูได้ ที่ ลิงก์นี้  เริ่มวิที่ 1:02 นะเผื่อวัยรุ่นใจร้อน อย่างพระสายตลกโปกฮานี่ ถ้ามีก็ควรมีนิดหน่อย ถ้าเพลาๆไปได้น่าจะดีกว่าเยอะ ทำไมรู้สึกว่าหนังจบได้ในตัวมันเองอยู่แล้ว แต่มีคนบอกว่ายังค้างๆคาๆ  ถ้าจะสร้างภาคสองก็คงได้แหละ พวกมารศาสนาในหนัง พอดูแล้วนึกถึงคลิปที่ทำไว้เล่นๆ ด้านล่าง @dsin.12 ธรรมะชนะอธรรม Dhamma conquers evil #buddha #animation #fight #evil #horror #mystery #life #bkk #bangkok #drama #fire #conquer ♬ original sound - Phong Eakamongul

แนะนำ ยาบำรุงครรภ์ จับซาไท้เป้า หรือ 13 องครักษ์พิทักษ์ครรภ์ ยาจีน บำรุงครรภ์

จับซาไท้เป้า  ยาบำรุงครรภ์ สมุนไพรจีน ช่วงนี้เพื่อนๆ เริ่ม ทยอย แต่งงาน กันแล้ว นะครับ เราเองก็มียาจีนมา นำเสนอ ซึ่งเป็น ยาดี ที่คุณแม่ ของเรา ทาน ตอนคลอดเรา นั่นก็คือ "จับซาไท้เป้า" ยาบำรุงครรภ์ นั่นเอง เงง เงง เงง เงง จับซาไท้เป้า เป็น ยาจีน ซึ่ง ประกอบไปด้วย สมุนไพร จีน 13 อย่างด้วยกัน มี สรรพคุณ เป็น ยาบำรุงครรภ์ บำรุง ทั้งคุณแม่ และ คุณลูก เลย เรียกได้ว่า สรรพคุณ ครบครัน บำรุง คุณแม่ ช่วงตั้งท้อง ช่วยให้ คุณลูก แข็งแรง มีผิวพรรณ สะอาดสะอ้าน ในตอนที่คลอดออกมา จะ คลอดง่าย ตัวจะไม่มีคราบไขมันติดเยอะ จ้า วิธีกินจับซาไท้เป้า ทานตั้งแต่ท้อง 5 เดือนขึ้นไป 2 อาทิตย์ทาน 1 ห่อ ทานจนคลอด ศิริรวมแล้ว ถ้าทาน ครบ dose โดยเริ่มตั้งแต่ 5 เดือน ต้องทานทั้งหมด 10 ห่อ จ้ะ วิธีต้มจับซาไท้เป้า  1 ห่อ ต้มได้ 2 ครั้ง ครั้งแรก ใส่น้ำ 3 ถ้วย ต้มเหลือ 8/10 ถ้วย ครั้งที่ 2 ใส่น้ำ 2.5 ถ้วย ต้มเหลือ 7/10 ถ้วย ซื้อที่ไหนดี หลายๆ คน มักจะมีคำถาม ว่า จับซาไท้เป้า ซื้อที่ไหน  ซึ่งเราเอง แนะนำร้านขาย จับซาไท้เป้า ซึ่งก็คือ ร้าน ขายยา ย่ง เชียง ตึ๊ง ซึ่ง

ปีอธิกสุรทิน อธิกมาส อธิกวาร และ การทดปฏิทิน

 ปีที่แบ่งตามรอบพระอาทิตย์ (สุริยคติ) มี 2 แบบ คือ 1. ปกติสุรทิน คือ มี 365 วัน 2. อธิกสุรทิน คือ มี 366 วัน (เดือนกุมภาฯมี 29 วัน) การคำนวน ปีอธิกสุรทิน ตรงนี้บางท่านจะจำได้แต่เพียง ว่า หาร 4 ซึ่งไม่ใช่แค่นั้นครับ ความจริงแล้ว จะมีสูตรคำนวณที่ถูกต้องคือ ให้เอา ค.ศ.ตั้ง แล้วเอา 4 หาร หากหารลงตัวก็ใช่ ยกเว้น 100 หารลงตัว แต่หาก 400 ลงตัวก็ให้นับเป็นอธิกสุรทินด้วย (เช่น ปี 1900 ไม่เป็นอธิกสุรทิน แต่ปี 2000, 2004 เป็นปีอธิกสุรทิน) ปีที่แบ่งตามรอบพระจันทร์ (จันทรคติ) แบ่งเป็น 3 คือ 1. ปกติมาส-ปกติวาร  (บางที่เขียนย่อ เป็น ปกติมาส-วาร)       คือ ปีที่เป็นปกติ มีเดือนคู่ ข้างขึ้น 15 วัน ข้างแรม 15 วัน       และมีเดือนคี่ ข้างขึ้น 15 วัน ข้างแรม 14 วัน       รวมวันใน 1 ปี เป็น (30*6+29*6) = 354 วัน 2. ปกติมาส-ปีอธิกวาร (บางที่เรียกเป็น อธิกวาร)       คือ ปีที่เป็นปกติ แต่เดือน 7 จะมีข้างแรม 15 วัน        รวมวันใน 1 ปี เป็น 354+1 = 355 วัน 3. ปีอธิกมาส-ปกติวาร (บางที่จะเรียกเป็น อธิกมาส)       คือ ปีที่มีเดือนแปดเพิ่มอีกเดือน หรือที่เรียกกันว่า มีเดือนแปดสองหน       รวมวันใน 1 ปี เป็น 354+30

[ ภาษี ] รายได้ อันไหนลงอะไร

40(4) - ดอกเบี้ยเงินฝาก  - บริษัทเงินทุนหลักทรัพย์​ เช่น หลักทรัพย์บัวหลวง - พันธบัตรรัฐบาล - หุ้นกู้ 40(4) (ข) - กองทุนรวม - หุ้น