【问题标题】:Unix script - first letters of a string [closed]Unix脚本 - 字符串的第一个字母[关闭]
【发布时间】:2014-05-09 13:21:16
【问题描述】:

当我运行以下脚本时:

#!/bin/bash 
test="abcdr"
test2=${test:0:2}
echo $test2

我收到错误:script: 3: script: Bad substitution

然后我在终端中输入完全相同的命令,它工作正常,没有任何错误

为什么会发生这种情况,我该如何解决?

【问题讨论】:

  • 你是如何运行你的脚本的? bash/bin/bash 中吗? (检查which bash)。
  • 如何运行脚本?
  • @user3597432 使其可执行 (chmod u+x script) 并像 ./script 一样运行它或像 bash script 一样运行它。 sh支持子字符串。
  • 这就是问题所在,在执行sh script 时,您正在使用sh 来解释它,而shell 不接受这种替换。相反,使用./script 执行,将得到/bin/bash
  • @jaypal 谢谢,就是这样

标签: bash unix terminal


【解决方案1】:

您正在使用sh 运行脚本,这与bash 不同。它不支持这种类型的替换。 运行你的脚本

bash script

或确保它是可执行的 (chmod u+x /path/to/script) 并直接运行它

/path/to/script

如果你的当前目录恰好是/path/to,你可以直接输入

./script

【讨论】:

    【解决方案2】:

    @user3597432 我在该脚本内容中看不到任何问题,主要是问题可能与 bash 版本或脚本的执行方式有关。如果您无法通过 bash 终端解决,可以尝试使用 korn shell,这样更方便。只需将 ksh bin 和脚本文件引用到 .ksh。 ksh 提供了使用 ksh -x script.ksh 执行的调试选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      • 2020-02-02
      • 2013-09-24
      • 1970-01-01
      • 1970-01-01
      • 2021-03-07
      相关资源
      最近更新 更多