私のシェルスクリプトで「コマンドステートメント:見つかりません」エラーが発生するのはなぜですか?

私のシェルスクリプトで「コマンドステートメント:見つかりません」エラーが発生するのはなぜですか?

declare以下は、スクリプトでこれを使用することを示す簡単な例です。しかし、getスクリプトは次のようになります。

$ cat /tmp/new
#! /bin/sh
declare -i  hello
$ chmod a+rwx /tmp/new
$ /tmp/new
/tmp/new: 3: declare: not found
$ source /tmp/new
$ 

スクリプトを直接実行するのはうまくいきませんが、ソーシングするのはなぜ機能するのか疑問に思います。最初のタスクをどのように機能させることができますか?ありがとうございます!

ベストアンサー1

declareは組み込み関数なので、一緒に使用することは/bin/shできません。構文はシェルによって異なる場合があります。したがって、sheebang()を選択する必要があります。スクリプトをbashとして実行する必要がある場合は、最初の行は次のようになります。bashzsh#!

#!/bin/bash

または

#!/usr/bin/env bash

おすすめ記事