3
只學習bash並試圖在腳本中實現函數。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
代碼的一部分,但它似乎沒有什麼區別。
描述的工具,你可能有一個DOS文件在UNIX中運行。嘗試運行'dos2unix'來「清除」它 – fedorqui
我在Windows上使用Textpad進行編輯,然後通過ftp進行編輯。所以如果我只是使用sudo nano來清理它? – dbmitch
不是,因爲Windows有不同的行結尾。只需使用工具'dos2unix'(或其他在[Windows命令轉換Unix行結束?](http://stackoverflow.com/q/17579553/1983854))中可以取代那些。 – fedorqui