首页 > 解决方案 > 意外的标记“(”定义一个函数来替换 bash 中的别名

问题描述

我想将函数创建为与我的服务器同步文件的别名。但我得到这个错误

-bash: /home/kenan/.aliases: line 2: syntax error near unexpected token `('
-bash: /home/kenan/.aliases: line 2: `rsnos () {'

我的代码是;

#!/bin/bash
rsnos () {
    local dest_server="dsp"
    local source_path="/home/kenan/django/event_project/"
    local dest_path="${dest_server}:/home/kenan/www"
    local exclude_all="--exclude={'.git','env','secrets.json','.vscode','static','event_project/wsgi.py','manage.py'}"
    local exc_gev="--exclude={'.git','env','.vscode'}"
    local exc_gevs="--exclude={'.git','env','.vscode','static'}"
    local log_rsync="--log-file /home/kenan/rsync.log"

    rsync -e \"ssh\" -a ${exclude_all} ${source_path} ${dest_path} ${log_rsync} --stats
}

如果这不是做我正在做的事情的正确方法,你能提出更好的方法吗?
谢谢

标签: bashshell

解决方案


您已经有一个别名。我可以重现问题

alias rsnos='echo 123'
rsnos () {
-bash: syntax error near unexpected token `('

首先删除aliaswith

unalias rsnos

当您从 aliassen 升级到函数时(不错的选择!),更改文件名。.alias应该仅用于alias定义。


推荐阅读