Ich führe das folgende Skript aus, um mit lftp automatisch Dateien von einem Server herunterzuladen. Es funktioniert nur, wenn es läuft, erhalte ich die Fehlermeldung
trap: SIGINT: bad trap
Wenn ich SIGINT und SIGTERM durch INT und TERM ersetze, funktioniert es, aber ich weiß nicht, ob es dann den gleichen Zweck erfüllt. Dies ist unter 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
oder gleichwertig?Antworten:
Löschen Sie das
SIG
Präfix, geben Sie einfach den Signalnamen ein:Nicht alle Shells verstehen die Eingabe mit dem
SIG
Präfixsh
(vermutlich verwenden Siedash
).Auf der anderen Seite verfügt reiche Shells wie
ksh
,bash
,zsh
erlaubenSIG
Präfix vor dem Signalnamen.quelle
#!
Linie Referenzbash
stattsh
.dash
, nicht wahr? Ich habe noch nie von dieser Shell gehört ...