Ceci est une ancienne révision du document !
le shell par défaut à la création du compte est /bin/bash
. Vous pouvez demander à en changer via les formulaires web.
Le manuel de Bash, en français :
Nombreux trucs & Astuces :
Voir ces schémas (en) :
Source: http://blog.flowblok.id.au/2013-02/shell-startup-scripts.html
(outil de création des diagrammes : http://hg.flowblok.id.au/shell-startup)
( si quelqu'un à la même chose pour tcsh, ça m'interesse…)
problème avec modulefiles, /usr/share/modules/init/bash
, soumission de jobs
/bin/bash: module: line 1: syntax error: unexpected end of file /bin/bash: error importing function definition for `BASH_FUNC_module'
set -euo pipefail
set -x
shellcheck monscript.sh
SC2154
: https://github.com/koalaman/shellcheck/wiki/SC2154home
par scratch
depuis SGE_O_WORKDIR
, sauve dans SCRATCHDIR
SCRATCHDIR=${SGE_O_WORKDIR/home/scratch}
INFILE=$1 TMPNAME=$(basename ${INFILE%.*}) OUTFILE="$TMPNAME"-done.hdf5 LOGFILE="$TMPNAME".log
# ${TMPDIR:?"TMPDIR nonexistent"} result=$(ls ${TMPDIR:?"TMPDIR nonexistent"}) if [[ "$result" == "nonexistent" ]] then echo "TMPDIR n'a pas été crée !" exit 1 fi
#! /bin/bash VARIABLE="Let's test this string!" # This is for regular expressions: if [[ "$VARIABLE" =~ "Let's.*ring" ]] then echo "matched" else echo "nope" fi # And here we have Bash Patterns: if [[ "$VARIABLE" == L*ing! ]] then echo "matched" else echo "nope" fi
#! /bin/bash VARIABLE="Let's test this string!" # This is for regular expressions: if [[ "$VARIABLE" =~ "Let's.*ring" ]] then echo "#1 matched" else echo "#1 nope" fi if [[ "$VARIABLE" =~ Let\'s.*ring ]] then echo "#2 matched" else echo "#2 nope" fi
Results: #1 nope #2 matched
To get #1 matching remove quotes around RegExpr or set compat31 : shopt -s compat31
#!/bin/sh thisString="1 2 3 4 5" searchString="1 2" # if you single quote your input, you could do this # searchString=$1 case $thisString in # match exact string "$searchString") echo yep, it matches exactly;; # match start of string "$searchString"*) echo yep, it matches at the start ;; # match end of string *"$searchString") echo yep, it matches at the end ;; # searchString can be anywhere in thisString *"$searchString"*) echo yep, it matches in the middle somewhere ;; *) echo nope ;; esac
On peut nommer les entrées d'un tableau (l'index).
tab[wwsi]="whatever/wwsi" tab[wwoz]="whatever/to/wwoz" tab[fip]="http://audio.scdn.arkena.com/11016/fip-midfi128.mp3"
Lister le tableau associatif :
for i in ${tab[@]}; do echo $i; done
printf "%s\n" "${tab[@]}"; done
Simplification de code résultante :
Parcours du tableau, connaissant l'index (ici $value).
tindex=$(for i in ${tab[@]}; do echo $i; done | grep ${value}) for ((i=0; i<${#tab[@]}; i++)) do if [[ "$tindex" == "{tab[$i]}" ]] then data=${tab[$i]} fi done
tindex=$(printf "%s\n" "${tab[@]}" | grep ${value}) data="${tab[$tindex]}"