Saya menjalankan skrip di bawah ini untuk secara otomatis mengunduh file dari server menggunakan lftp. Ini berfungsi kecuali bahwa ketika dijalankan saya mendapatkan pesan kesalahan
trap: SIGINT: bad trap
Jika saya mengganti SIGINT dan SIGTERM dengan INT dan JANGKA kemudian itu berfungsi, tapi saya tidak tahu apakah itu kemudian mencapai tujuan yang sama. Ini ada di 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
atau setara?Jawaban:
Jatuhkan
SIG
awalan, cukup masukkan nama sinyal:Tidak semua shell mengerti / mengambil input dengan
SIG
awalan,sh
(mungkin Anda gunakandash
) adalah salah satunya.Di sisi lain, lebih fitur kerang kaya seperti
ksh
,bash
,zsh
memungkinkanSIG
awalan di depan nama sinyal.sumber
#!
line untuk referensibash
bukansh
.dash
, ya? Saya belum pernah mendengar cangkang itu sebelumnya ...