Ceci est une ancienne révision du document !
Bash
Array
- déclaration :
array=( 1 2 3 )
- ajouter un élément :
array+=( 4 )
- lister tous les éléments :
echo “${array[@]}”
- récupérer le nombre d'élement :
echo ${#array[@]}
Fonctions utiles
in_array
function in_array() { local needle=$1 el shift for el in "$@"; do [ "$el" = "$needle" ] && return 0 done return 1 }
Utilisation :
array=(1 2 3) in_array 1 ${array[@]} && echo IN in_array 5 ${array[@]} && echo OUT
is_empty
function is_empty() { [ $# -gt 0 ] && return 1 return 0 }
Utilisation :
array=(1 2 3) is_empty $array && echo empty ! is_empty $array && echo not empty
implode
function implode() { local d=${1-} f=${2-} if shift 2; then printf %s "$f" "${@/#/$d}" fi }
Utilisation :
array=(1 2 3) echo $( implode "," "${array[@]}" ) # Output: 1,2,3 echo -e "- $( implode "\n- " "${array[@]}" )" # Output: # - 1 # - 2 # - 3
format_duration
function format_duration { local T=$1 local D=$((T/60/60/24)) local H=$((T/60/60%24)) local M=$((T/60%60)) local S=$((T%60)) (( $D > 0 )) && printf '%d days and ' $D printf '%02d:%02d:%02d' $H $M $S }
Gestion des paramètres
#!/bin/bash DEBUG=0 BIN_PATH="/bin/binary" EXTRA_ARGS=() function usage() { error="$1" [ -n "$error" ] && echo "$error" cat << EOF Usage : $(basename $0) [-d] [-b /path/to/binary] -b [path] Binary path (default: $BIN_PATH) -d Debug mode -X Enable bash tracing (=set -x) -h Show this message EOF [ -n "$error" ] && exit 1 exit 0 } function debug() { [ $DEBUG -eq 1 ] && >&2 echo -e "$( date '+%Y-%m-%d %H:%M:%S' ) - $@" } idx=1 while [ $idx -le $# ] do OPT=${!idx} case $OPT in -d) DEBUG=1 ;; -h) usage ;; -b) ((idx++)) BIN_PATH=${!idx} if [ ! -x "$BIN_PATH" ] then usage "Invalid binary path ($BIN_PATH)" fi ;; -X) set -x ;; *) EXTRA_ARGS+=( $OPT ) ;; esac ((idx++)) done debug "Extra args: ${EXTRA_ARGS[@]}"