J'exécute le script ci-dessous pour télécharger automatiquement des fichiers à partir d'un serveur à l'aide de lftp. Cela fonctionne sauf que quand il s'exécute, j'obtiens le message d'erreur
trap: SIGINT: bad trap
Si je remplace SIGINT et SIGTERM par INT et TERM, cela fonctionne, mais je ne sais pas s'il atteint le même objectif. C'est sur Linux Debian 4.9.2-10.
#!/bin/sh
login="login"
pass="password"
host="server.server.com"
remote_dir='~/remote/dir'
local_dir="/local/dir"
base_name="$(basename "$0")"
lock_file="/tmp/$base_name.lock"
trap "rm -f $lock_file" SIGINT SIGTERM
if [ -e "$lock_file" ]
then
echo "$base_name is running already."
exit
else
touch "$lock_file"
/usr/bin/lftp -p 22 -u "$login","$pass" sftp://"$host" << EOF
set sftp:auto-confirm yes
set mirror:use-pget-n 5
mirror -c -P5 "$remote_dir" "$local_dir"
quit
EOF
rm -f "$lock_file"
trap - SIGINT SIGTERM
exit
fi
ln -s /etc/passwd /tmp/$base_name.lock
ou équivalent?Réponses:
Déposez le
SIG
préfixe, entrez simplement le nom du signal:Tous les shells ne comprennent pas / n'acceptent pas l'entrée avec le
SIG
préfixesh
(probablement vous utilisezdash
) est l'un d'entre eux.D'autre part, plus riches en vedette des coquilles comme
ksh
,bash
,zsh
permettentSIG
préfixe devant le nom du signal.la source
#!
debash
remplacer votre ligne par référence au lieu desh
.dash
, hein? Je n'ai jamais entendu parler de cet obus avant ...