【问题标题】:How to change "code ," in bash to "code ." [duplicate]如何将 bash 中的“代码”更改为“代码”。 [复制]
【发布时间】:2018-12-06 22:42:06
【问题描述】:

我正在尝试在 bash 中将 code , 更改为 code .,但我遇到了一堆错误。这应该可以。

code() {
  if [[ $1 == ,]];
  then
    code .
  else
    code $1
  fi
  return 1
}

由于分号,它给了我解析错误

如果我去掉分号,它会给我预期的条件:$1

如果我在, 中添加引号并重新添加分号,如果在 `;' 附近出现解析错误

如果我保留引号并删除分号,我会得到预期的条件:$1

如果我删除分号并转义 , 它实际上只是关闭了终端窗口。

这里发生了什么?这应该可以工作。

【问题讨论】:

  • ,]] 之间需要一个空格。
  • 将您的代码粘贴到 shellcheck.net。
  • 我将它粘贴到 shellcheck.net 并添加了空格,我收到了这个错误:第 1 行:code() { ^-- SC2148:提示取决于目标 shell 而你的未知。添加一个shebang。第 6 行:代码 $1 ^-- SC2086:双引号以防止通配符和分词。
  • 您是在专门询问 Bash;为什么这也被标记为zsh
  • 嗨,tripleee,您找到的副本是什么?你能链接到它吗?

标签: bash terminal zsh


【解决方案1】:
$ cat foo.sh
#!/bin/bash        # added shebang, bash since you have [[
code() {
  if [[ $1 == , ]] # removed the ; and added a space after ,
  then
    echo then      # added this
    code .
  else
    echo else      # and this
    code $1
  fi
  return 1
}

code $1

运行它:

$ bash foo.sh , | head -3
then
else
else
$ bash foo.sh . | head -3
else
else
else

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 2021-12-02
    • 2020-12-21
    • 2015-09-22
    • 1970-01-01
    相关资源
    最近更新 更多