можно ли помочь мне с очень странной ситуацией,
У меня есть Ubuntu 18.04 и запускающий некоторый скрипт удара, и мой сценарий похож на это.
#!/bin/bash
FOLDER="$1"
FILE="$2"
BASENAME=$(/bin/basename "$FOLDER/$FILE" | /bin/sed 's/\.[^.]*$//')
HOST="FTPSERVER"
USER="username"
PASSWORD="pass"
###########################
cd /home/vod/output/
#start=$(date +%s)
ftp -n -v >> /var/log/ftptransfer_hrmxf.log 2>&1 $HOST <<END_SCRIPT
binary
user $USER $PASSWORD
prompt
cd media
put $FILE
quit
END_SCRIPT
############### FIXME!!!! #######################
echo "$BASENAME" >> /var/log/videos_done
проблема здесь, что Команда ЭХА не производит Базовое имя, и вместо этого это произвело Символ пробела.
помогите мне понять то, что я делаю неправильно?
Огромное спасибо.
Во-первых, basename
расположен в /usr/bin/basename
НЕ, где Вам кодировали его в Ваших сценариях. Таким образом, потому что basename
команда перестала работать (и Вы не проверили это в свой код), значение varialble $BASENAME
наиболее вероятно NULL
.
То, что я обычно делаю в любых сценариях, является местом явный ПУТЬ в начале сценария. Что-то как:
PATH=/usr/bin:/bin:/usr/local/bin
export PATH
Это не сразу понятно что цель sed
команда.
Также попытайтесь использовать команду bash -uvx scriptname
исследовать расширение и установку переменных перед командой и когда команда выполняется.