【问题标题】:Syntax error when creating bash function with an argument [duplicate]使用参数创建 bash 函数时出现语法错误 [重复]
【发布时间】:2018-08-11 01:08:23
【问题描述】:
function y-dl ($URL) {
cd ~/Music/
youtube-dl -f bestaudio --prefer-ffmpeg --extract-audio --audio-format mp3 $URL > /dev/null 2>&1
}

我正在尝试为我的 bash 配置文件编写一个 bash 函数,该函数在 stderr 或 stdout 中没有任何冗长的下载 YouTube 音频,但我收到以下编译错误:

-bash: /Users/mu/.bash_profile: line 11: syntax error near unexpected token `$URL'
-bash: /Users/mu/.bash_profile: line 11: `function y-dl ($URL) {'

我正在尝试来自Passing parameters to a Bash function 的最佳答案的变体,但我无法让它工作。

【问题讨论】:

  • 函数在其定义中不采用参数列表。关键字“功能”是多余的。只需写:y_dl() { ... }(名称中不要使用连字符)
  • 在函数中,参数是按编号引用的,但您可以明确命名。 local URL=$1
  • 回复:function 关键字,参见wiki.bash-hackers.org/scripting/obsolete
  • ...链接到的答案未显示正在修改的 () 字符串。为什么要在这里修改?

标签: bash function unix arguments


【解决方案1】:

正确而现代的方式:

y-dl() {
    cd ~/Music/
    youtube-dl -f bestaudio --prefer-ffmpeg --extract-audio --audio-format mp3 "$1" &>/dev/null
}

函数构造从不接受 签名 样式的参数 例如:func(foo, bar) 它是外壳

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-12
    • 1970-01-01
    • 2021-04-26
    • 2023-03-09
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 2015-08-22
    相关资源
    最近更新 更多