# 一定要使用 root 身分才可以執行 Sync
if [ "$(id -u)" != "0" ]; then
echo "** Error : You must run the script as root." 1>&2
exit 1
fi
# if 的用法
if [ $action = 'Stage' ]; then
webs=$sWebs;
cmd=$sCmd;
elif [ $action = 'Online' ]; then
webs=$oWebs;
cmd=$oCmd;
fi
# echo -n 表是不斷行 , -e 表支援 \n \t 那些東西 ,-E 不支援 \n \t (預設)
# Sample : 輸入 A、F or C ,
echo -n 'Step 2 : Sync All(A) Folder/File(F) Cancel(C) -- : '
read opt
# case 用法,只要開頭為大小寫的aA fF cC均可
case "$opt" in
[aA]*)
echo -e '----> Sync All \n'
syncOpt='SyncAll'
;;
[fF]*)
echo -e '----> Sync Folder/File \n'
funcSetFile # call function funcSetFile
while funcCheckFile $syncFile; do
echo -e "** Error : Folder/File not exist. \n" 1>&2
unset syncFile;
funcSetFile # call function funcSetFile
done
syncOpt='SyncFile'
;;
[cC]*)
echo 'Bye!! Bye!!'
;;
*)
echo 'Bye!! Bye!!'
;;
esac
# 完全符合 SyncAll 或 SyncFile 字串才行
case "$syncOpt" in
SyncAll)
funcSyncAll # call function funcSyncAll
;;
SyncFile)
funcSyncFile # call function funcSyncFile
;;
*)
echo '... bye!!'
;;
esac
# 檢查 目錄/檔案 是否存在
funcCheckFile(){
if [ -f $srcFolder/$1 -o -d $srcFolder/$1 ]; then
return 1;
else
return 0;
fi
}
# 可以使用 func $param 來傳參數。但func的回傳值只能是數值,不可以是字串
syncFile='etc/passwd'
while funcCheckFile $syncFile; do
echo -e "** Error : Folder/File not exist. \n" 1>&2
unset syncFile;
funcSetFile # call function funcSetFile
done
# 取得字串長度:
len=${#str}
# 取得部份字串
# Linux 環境上,使用下面二個方式都可以成功:
substr=`expr substr $str 1 5`
substr=${str:0:5}
# 但 BSD 上,前二個方式我都沒辦法用,最後問了BSD專家 【孟凱】
substr=`echo ${str} | cut -c 1-5`
# 一開始就輸入的參數 ex.. sh script 1 2 3 4 5 6
for param in $@
do
echo $param
done
0 comments:
張貼留言