Bash 脚本奇怪的行为 - 脚本不充当手动命令

Bash 脚本奇怪的行为 - 脚本不充当手动命令

所以,这很奇怪。当我手动运行命令时,一切正常,但是当我使用相同的命令运行脚本时,我会得到奇怪的错误输出。

这就是我运行的:

lxc list;
for elem in {001..005}; do lxc stop ubuntu-"$elem"; done;
for elem in {001..005}; do lxc start ubuntu-"$elem"; done;
lxc list;

当我手动执行此操作时,一切正常,没有错误,并且我的命令具有实际效果。 LXD 机器实际上正在停止并重新启动。

但是,如果我只是将其写成脚本:

#!/bin/bash
lxc list;
for elem in {001..005}; do lxc stop ubuntu-"$elem"; done;
for elem in {001..005}; do lxc start ubuntu-"$elem"; done;
lxc list;

我收到错误(非常无信息的错误,我猜想找不到可以运行命令的机器)。

error: not found
error: not found

对于两个循环命令。

我是新来的所以请指教。

答案1

{001..005} 是 bash 功能,但您正在使用 sh 运行脚本,并且在 Ubuntu 上 sh 是 dash 而不是 bash。

sh script.sh因此,不要使用butbash script.sh或什至只是因为脚本开头./script.sh有 来运行脚本。#!/bin/bash

相关内容