60 lines
		
	
	
	
		
			750 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
	
		
			750 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| # Simple todo list
 | |
| 
 | |
| FILE="$HOME/.todo"
 | |
| 
 | |
| function is_int() {
 | |
| 	return $(test "$@" -eq "$@" > /dev/null 2>&1);
 | |
| }
 | |
| 
 | |
| function list(){
 | |
| 	if [ -f "$FILE" ]; then
 | |
| 		awk '{printf("%5d : %s\n", NR,$0)}' "$FILE"
 | |
| 	else
 | |
| 		echo "$FILE does not exist"
 | |
| 		exit 1
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| function add(){
 | |
| 	echo "$@" >> "$FILE"
 | |
| }
 | |
| 
 | |
| function delete(){
 | |
| 	while [ -n "$1" ]; do
 | |
| 		if is_int "$1"; then
 | |
| 			sed -i "${1}d" "$FILE"
 | |
| 		fi
 | |
| 		shift
 | |
| 	done
 | |
| 	exit
 | |
| }
 | |
| 
 | |
| if [ -n "$1" ]; then
 | |
| 	while [ -n "$1" ]; do
 | |
| 		case "$1" in 
 | |
| 			"list"|"l")
 | |
| 				shift
 | |
| 				list "$@"
 | |
| 				exit 0
 | |
| 				;;
 | |
| 			"add"|"a")
 | |
| 				shift
 | |
| 				add "$@"
 | |
| 				exit 0
 | |
| 				;;
 | |
| 			"delete"|"del"|"d")
 | |
| 				shift
 | |
| 				delete "$@"
 | |
| 				exit 0
 | |
| 				;;
 | |
| 			*)
 | |
| 				echo "Command $1 unknown"
 | |
| 				exit 1
 | |
| 		esac
 | |
| 	done
 | |
| else
 | |
| 	list
 | |
| fi
 | |
| exit
 |