Welcome

Bash không phải tiếng người

Sáng nay, à, cả ngày hôm nay hì hục, rút cục cũng xong cái task “Run file sh from file”.
Bài toán thế này: Cho file A, trong file có nhiều dòng, mỗi dòng gồm nhiều tham số, mỗi tham số cách nhau bởi dấu chấm phẩy (;), đọc từng dòng và tách các tham số để tạo thành một câu lệnh và chạy câu lệnh đó. Tất cả viết bằng bash script.

Trước giờ dùng java, python, php, javascript thấy nó cũng giống giống tiếng người, nhưng động vào bash script thì thấy nó đúng là tiếng máy chứ không phải tiếng người :))
Nhọc công google thần chưởng mãi mà nó vẫn không sao ra được kết quả. Đã có lúc định quay sang code bằng python hoặc nodejs, nhưng mà nghĩ tức quá, chẳng lẽ thua bọn bash củ chuối này, cuối cùng cũng có được thành quả.
Túm lại là như này, không giải thích nhiều nhé, mệt lắm /:)

# /bin/bash
while IFS='' read -r i || [[ -n "$i" ]]; do
echo "$i"
MODULE_ID=$(echo $i | awk -F';' '{print $1}')
COMMAND=$(echo $i | awk -F';' '{print $2}')
MODULE_NAME=$(echo $i | awk -F';' '{print $3}')
MODULE_VERSION=$(echo $i | awk -F';' '{print $4}')
MODULE_URL=$(echo $i | awk -F';' '{print $6}')
echo "MODULE_ID: $MODULE_ID – COMMAND: $COMMAND"
IFS='/' read -ra array <<< "$MODULE_URL"
#get length of array
last_index=${#array[@]}
#kill pid before run
PID=$(/bin/cat run/$MODULE_ID.pid)
kill $PID
#run .sh file in folder source
RUN_COMMAND="nohup source/${array[last_index-1]} &> /dev/null & echo \$! > run/$MODULE_ID.pid &"
echo $RUN_COMMAND
eval $RUN_COMMAND
done <<< "$(cat run/updateServerModules.version.txt)"

view raw
runfilesh.sh
hosted with ❤ by GitHub

Leave a Reply