#!bin/bash , 宣告这个scirpt 使用的shell名称,因为我们使用的是bash,所有以#!/bin/bash来宣告这个档案内的语法使用# Program:# This program shows "Hello World!" in your screen.# History:# 2005/08/23 Junfire First release
#!/bin/bash#program:#function :save and fetch and list goods#save save goods name, if exists , won't saved again#fetch fetch goods and delete it from datasets#list 为查看所有已存储的物品#物品均已字符串形式存放#history#2016.9.3 first committitle_file="title.txt"temp_file=/tmp/cdb.$$menu_choice=""trap'rm -f $temp_file' EXIT #trap命令用于设置在用户按下Ctrl+C组合键时的中断处理set_menu_choice(){echo"Main Menu:"echo" a) save"echo" b) fetch"echo" c) list"echo" q) quit"echoread menu_choice
return}get_return(){read-p"press any key to continue, but q for exit: " x
if["$x"="q"];thenexit0fireturn0}save(){read-p"please input the name of goods you want to save: " name
ifgrep-q$name$title_file;thenecho"already exist"elseecho$name>>$title_fileecho"saved"fi
get_return
}fetch(){read-p"please input the name of goods you want to find: " name
ifgrep-q$name$title_file;thengrep-v"$name"$title_file>$temp_filemv$temp_file$title_fileecho"fetched"elseecho"Sorry, goods don't exist"fi
get_return
}list(){echocat$title_fileecho
get_return
}rm-f$temp_fileif[!-f$temp_file];thentouch$temp_filefiif[!-f$title_file];thentouch$title_fileficlear# clear the terminal screensleep1quit=n
while["$quit"!="y"];do
set_menu_choice
case"$menu_choice"in
a) save ;;
b) fetch ;;
c) list ;;
q | Q)quit=y;;
*)echo"Sorry , choice not recognized"esacdonerm-f$temp_fileecho"Finished"exit0# shell脚本收藏#batch renamei=0;forimgin`ls *.jpg`;domv$img test-`printf %04d $i`.png;i=`expr $i + 1`;done#!/bin/bashecho$*#第一个冒号表示忽略错误;字符后面的冒号表示该选项必须有自己的参数#在getopts分析选项时,如果-a后面不带参数,直接跟-b的话,那么-b将作为-a的参数。whilegetopts":a:bc" opt
docase$optin
a )echo"a $OPTARG$OPTIND";;
b )echo"b $OPTIND";;
c )echo"c $OPTIND";;
? )echo"error"exit1;;esacdoneecho$OPTINDshift$(($OPTIND -1))#通过shift $(($OPTIND - 1))的处理,$*中就只保留了除去选项内容的参数,可以在其后进行正常的shell编程处理了。echo$0echo$*