echo 命令在 Ubuntu 18.04 中回显空白输出而不是变量值

echo 命令在 Ubuntu 18.04 中回显空白输出而不是变量值

你能帮我解决一个非常奇怪的情况吗?

我有 Ubuntu 18.04 并且正在运行一些 bash 脚本,我的脚本如下所示。

    #!/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

问题在于 ECHO 命令不输出基本名称,而是输出空白字符。

请帮助我理解我做错了什么?

太感谢了。

答案1

首先,basename位于 ,/usr/bin/basename而不是您在脚本中编码的位置。因此,由于命令basename失败(并且您没有在代码中检查这一点),变量的值$BASENAME很可能是NULL

我通常在编写脚本时在脚本开头放置一个显式的 PATH。例如:

 PATH=/usr/bin:/bin:/usr/local/bin
 export PATH

目前还不清楚该sed命令的目的是什么。

还可以尝试使用该命令bash -uvx scriptname来检查命令之前和命令执行时变量的扩展和设置。

相关内容