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

2つのループコマンドについて。

私はここに初めて来たので、アドバイスをお願いします。

ベストアンサー1

{001..005} bash機能ですが、shを使用してスクリプトを実行しています。Ubuntuでは、shはbashではなくdashです。

sh script.shしたがって、スクリプトの先頭にスクリプトがあるため、スクリプトを使用または実行しないbash script.shでください。./script.sh#!/bin/bash

おすすめ記事