Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Author: x4x
- # Create a job queue for bash.
- set -o errexit
- set -o nounset
- FIFO=/tmp/shfifo0
- n=0
- MARK='\033[0;35m'
- NC='\033[0m' # No Color
- trap "rm -f $FIFO" EXIT
- if [[ ! -p $FIFO ]]; then
- mkfifo $FIFO
- fi
- # read whatever from the named pipe.
- while read job < $FIFO
- do
- n=$((n+1))
- if [[ $job = 'quit' ]]; then
- echo -e "${MARK}Done processing $n jobs${NC}"
- exit
- fi
- echo -e "${MARK}running job $n: ${NC} $job"
- {
- (eval '$job') | sed -e 's/^/'"$n> /" &
- # catch errors
- } || {
- echo -e "${MARK}An Error happend${NC}"
- }
- done
- # use:
- # run in other shell a piped comand to the FIFO
- # echo "ytd " > /tmp/shfifo0
- # #alias ytd='youtube-dl -x --audio-format mp3 '
- # function ytmq { echo "youtube-dl -x --audio-format mp3 $1" > /tmp/shfifo0; }
Add Comment
Please, Sign In to add comment