Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos OSX中的bash语法错误_Macos_Bash - Fatal编程技术网

Macos OSX中的bash语法错误

Macos OSX中的bash语法错误,macos,bash,Macos,Bash,下面的bash脚本是在Linux上编写和测试的,当被调用时,它甚至不会在osx上启动 #!/bin/bash # # Some comments # # function usage { echo "" echo "Usage: thisscript <SOURCE_DIRECTORY> <TARGET_DIRECTORY>" echo "" echo "<SOURCE_DIRECTORY> the directory

下面的bash脚本是在Linux上编写和测试的,当被调用时,它甚至不会在osx上启动

#!/bin/bash
#
#   Some comments
#
#
function usage {
    echo ""
    echo "Usage: thisscript <SOURCE_DIRECTORY> <TARGET_DIRECTORY>"
    echo ""
    echo "<SOURCE_DIRECTORY>    the directory where the this "
    echo "              directory resides (default is /usr/dis)"
    echo ""
    echo "<TARGET_DIRECTORY>    the destination directory"
    echo ""
}

function notDarwin {
    mv -f $CUR_DIR/* $NEW_DIR/
    ln -sf "$NEW_DIR/ee/sc/scrp" "/usr/bin/scrp"
    ln -sf "$NEW_DIR/ee/etc/conffile.conf" "/etc/conffile.conf"
    exit 0
}

function isDarwin {
    mv -f $CUR_DIR/* $NEW_DIR/
    ln -sf "$NEW_DIR/ee/sc/scrp" "/usr/local/bin/scrp"
    cp "$NEW_DIR/ee/etc/conffile.conf" "/etc/conffile.conf"
    exit 0
}

#
#   =============================================
#   ================== MAIN =====================
#   =============================================
#

CUR_DIR=${1%/}
NEW_DIR=${2%/}

if [ ! -d "$CUR_DIR" ]; then
    echo ""
    echo "blah blah"
    usage
    exit 1
fi

if [ ! -d "$NEW_DIR" ]; then
    echo ""
    echo "The target directory supplied does not exist. Creating target directory $NEW_DIR"
    mkdir "$NEW_DIR"
    if [ $? -ne 0 ]; then
        echo "Could not create target directory. Exiting..."
        exit 1
    else
        echo "Directory $NEW_DIR created"
    fi
    echo ""
fi

UNAME=$(uname)
if [ $UNAME == "Darwin" ]; then
    isDarwin
else
    notDarwin
fi
我对OSX还比较陌生,也许我错过了一个好机会。脚本在Linux上运行良好


感谢您,Linux和现代OS X希望行以LF(换行符)字符结尾。如果您的线路以CR+LF结尾,那么您将遇到问题


其他一些通用指针:

函数
语法是非标准的。您应该使用所有POSIX兼容shell支持的标准语法:

更改:

function usage {
致:

我怀疑一切都会好起来的


另一方面,您应该引用所有的参数展开式(您错过了几个)。使用小写变量名也被认为是一种良好的做法,因为shell使用大写变量名,您可能会与它们发生冲突。

也尝试过,但没有帮助…:/错误现在转到
第7行:用法(){
我看不到任何其他可能导致脚本出现问题的内容。老实说,
函数
语法应该在任何一种平台上的bash中都得到支持…也许这是换行符的问题?不知道,我检查了脚本,它的每一行都有CR和LF…我将文件传输到windows并使用记事本++此外,我在另一台Mac电脑上运行了脚本,同样的错误…让我困惑me@Dragan它不应该两者都有;在现代OS X上它应该只有LF。很明显,您的行尾字符有问题!您有LF/CR行尾。使用编辑器的选项将文件保存为Unix行尾。请参阅,尤其是e第一点:检查脚本或数据是否具有DOS样式的行尾字符。
function usage {
usage() {