Never been to CodeSnippets before?

Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world (or not, you can keep them private!)

Read file into array in Bash

# cf. "How can I read a file (data stream, variable) line-by-line?", 
# http://wooledge.org:8000/BashFAQ/001

man bash 2>/dev/null | less -p '\$\(< file\)'

declare -a lines
OIFS="$IFS"
IFS=$'\n'
set -f   # cf. help set
lines=( $(< "/private/etc/passwd" ) )
set +f
IFS="$OIFS"

echo "${#lines[@]}"
printf "%s\n" "${lines[@]}" | nl

for ((i=0; i < "${#lines[@]}"; i++)); do 
   echo "${lines[${i}]}"
done

Simple command line editor with Readline support

# for alternatives see http://codesnippets.joyent.com/posts/show/1625
unset -f edit

function edit() {
   declare -a ar
   declare -i i=-1
   while read -e -d $'\n' line; do let i++; ar[$i]="${line}"$'\n'; done   # -e enables readline
   printf "%s\n" "${ar[@]}" >> ~/.bash_history
   #printf "%s\n" "${ar[@]}" | /usr/bin/tr '\n' ' '  >> ~/.bash_history
   #printf "%s\n"  >> ~/.bash_history
   history -n
   eval "${ar[@]}"
   return 0
}

edit
echo "!";
[ctrl-r]
...
[ctrl-d]

edit
if [[ 5 -gt 3 ]]; then
   echo 12345
fi
[ctrl-d]

[ctrl-d]  # quit and execute the command
[ctrl-c]  # do not execute the command and abort