从内部脚本调用bash代码时出现替换错误

Tmi*_*ner 0 unix bash

我有一段简单的代码,当我自己运行时,它可以工作,虽然它从文件中调用时不起作用.

代码如下:

for files in *; do echo ${files::10}; done 
Run Code Online (Sandbox Code Playgroud)

当我尝试将其放入文件(例如MyScript.sh)时,我运行以下命令:

sh MyScript.sh
Run Code Online (Sandbox Code Playgroud)

我收到以下错误"MyScript.sh:2:MyScript.sh:Bad substitution"

为什么会这样?怎么解决这个问题?

Die*_*ano 5

你应该把它用bash不是sh因为你正在使用bash语法

bash MyScript.sh
Run Code Online (Sandbox Code Playgroud)

或者添加一个shebang(作为脚本的第一行)

#! /bin/bash
Run Code Online (Sandbox Code Playgroud)

并设置执行权限

chmod +x MyScript.sh
Run Code Online (Sandbox Code Playgroud)

然后你可以调用它

./MyScript.sh
Run Code Online (Sandbox Code Playgroud)