Bash语法错误

dbmitch

只是学习bash并尝试在脚本中实现功能。

下面的脚本通过ShellCheck运行良好,但是从命令行运行bash时出现语法错误

这一定是我定义函数的方式,但是我想不出正确的方法-尤其是如果它通过ShellCheck

error is on line 24
syntax error near unexpected token `${\r''
`autounload() {

脚本:

#!/bin/bash
# /home/pi/scripts/usb-unloader.sh
#
# Called from {SCRIPT_DIR}/usb-initloader.sh
# make sure to chmod 0755 on file
#
# UnMounts usb device on /media/<device>
# Logs changes to /var/log/syslog and local log folder
# use tail /var/log/syslog to look at latest events in log
#
# CONFIGURATION
#
LOG_FILE="$1"
MOUNT_DIR="$2"
DEVICE="$3"  # USB device name (from kernel parameter passed from rule)
#
# check for defined log file
if [ -z "$LOG_FILE" ]; then
    exit 1
fi
#
# autounload function to unmount USB device and remove mount folder
#
autounload() {
    if [ -z "$MOUNT_DIR" ]; then
        exit 1
    fi
    if [ -z "$DEVICE" ]; then
        exit 1
    fi

    dt=$(date '+%Y-%m-%d %H:%M:%S')
    echo "--- USB Auto UnLoader --- $dt"

    sudo umount "/dev/$DEVICE"
    sudo rmdir "$MOUNT_DIR/$DEVICE"

    # test that this device isn't already mounted
    device_mounted=$(grep "$DEVICE" /etc/mtab)

    if ! "$device_mounted"; then
        echo "/dev/$DEVICE successfully Un-Mounted"
        exit 1
    fi
}

autounload >> "$LOG_FILE" 2>&1

这是我开始定义函数的代码部分

#
autounload() {
    if [ -z "$MOUNT_DIR" ]; then
        exit 1
    fi

我试图将函数在调用它的位置上下移动,但这似乎没有什么区别。

fedorqui'停止伤害'

正如在注释中发现的,您有一个Windows(DOS)文件,该文件随后在UNIX计算机上运行。这样做的问题是,在DOS中\r\n行尾在UNIX中\n而在UNIX中行尾在,所以\r每行中都有多余的东西

要摆脱这些问题,您可以使用以下任一方法:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Bash语法错误

来自分类Dev

BASH语法错误-[:缺少`]'

来自分类Dev

Bash:@()上的语法错误

来自分类Dev

bash命令的语法错误

来自分类Dev

Bash如果...则...语法错误

来自分类Dev

Bash:语法错误:“(”意外

来自分类Dev

bash语法错误(“ <”中的令牌错误)

来自分类Dev

玩弄bash,获取语法错误

来自分类Dev

bash:意外令牌'('附近的语法错误

来自分类Dev

OSX中的bash语法错误

来自分类Dev

意外令牌`('附近的Bash语法错误

来自分类Dev

bash语法错误“ exec 11 <<&-”

来自分类Dev

-bash:意外令牌附近的语法错误

来自分类Dev

-bash:意外令牌';'附近的语法错误

来自分类Dev

bash:意外令牌'}'附近的语法错误

来自分类Dev

bash:意外令牌'('附近的语法错误

来自分类Dev

Bash不会因语法错误而退出

来自分类Dev

bash中if [“ $ foo” ==“ bar”]的语法错误

来自分类Dev

bash:意外令牌附近的语法错误

来自分类Dev

Ubuntu bash函数..语法错误:“(”或“}”意外

来自分类Dev

bash:语法错误:文件意外结束

来自分类Dev

bash:意外令牌'<'附近的语法错误

来自分类Dev

bash_profile语法错误

来自分类Dev

令牌`fi'附近的bash语法错误

来自分类Dev

bash:意外令牌';'附近的语法错误

来自分类Dev

BASH脚本获取语法错误

来自分类Dev

Bash 语法错误 Python 帮助

来自分类Dev

条件语句中的 Bash 语法错误

来自分类Dev

bash中的“意外令牌'elif'附近的语法错误”错误