コマンドはコマンドラインでは機能しますが、シェルスクリプトでは機能しません。

コマンドはコマンドラインでは機能しますが、シェルスクリプトでは機能しません。

スクリプトを作成していてコマンドの戻り値をキャプチャしようとすると、端末でこのコマンドを使用すると、コマンドが見つかりませんでしたエラーが発生します。

gcloud -q compute snapshots list --format='csv(NAME)'

良い結果。

スクリプトは次のとおりです。

#!/bin/sh
CSV_SNAPSHOTS= $(gcloud -q compute snapshots list --format='csv(NAME)')
IFS=$'\n'

for i in $CSV_SNAPSHOTS
do
    echo "$i"
done

ベストアンサー1

変数宣言の後(および前)には=スペースを入れてはいけません。=

だからこうする必要があります:

CSV_SNAPSHOTS=$(gcloud -q compute snapshots list --format='csv(NAME)')

また、(ほぼ常に)変数とコマンドの置き換えを引用する必要があることに注意してください。ただし、この場合はコマンド置換を変数に格納するため、引用を避けることもできます。


例:

$ foo="$(echo spam)"
$ echo "$foo"
spam

$ bar= "$(echo egg)"
No command 'egg' found, did you mean:

おすすめ記事