予想される結果

予想される結果

Task.sh実行権限を持つスクリプト(例)があります。

擬似コード:

if [[ Not called from inside a script ]]; then
  echo 'Not called from inside a script'
else
  echo 'Called from a script'
fi

Main.sh実行権限を持つスクリプトがあります。

Value=$(Task.sh)
echo "${Value}"

予想される結果

$ Task.sh
Not called from inside a script

$ Main.sh
Called from a script

ヘルプリクエスト

疑似コードにどの条件を追加するかを提案してくださいTask.sh

答え1

1つのオプションは要求を」これをスクリプトで実行していますか?「到着する」ターミナルまたはパイプ/ファイルに接続しますか?「これを行うと、次のような状況が可能になりますTask.sh >/tmp/file。スクリプトでは呼び出されませんが、クリップボードの代わりにファイルに書き込む必要があるようです。

これが許可されている場合は、簡単なテストを使用できます。標準出力ターミナルに接続:

if [ -t 1 ]
then
    echo "stdout is a terminal (tty)"
else
    echo "not a terminal (tty)"
fi

ツールは、使用されている状況に応じて、非常に類似した方法を使用して異なる方法で使用および操作されますlsttyたとえば、比較しlsls | cat

答え2

ツールを使用してクリップボードに何かをコピーすることはほとんどありません。明示的に記述し、要求がある場合にのみ実行するのが最善です。

したがって、1つのオプションは、スクリプトがクリップボードを使用する必要があるコマンドライン引数を確認し、それ以外の場合はデフォルトで標準出力に印刷することです。

スクリプトでコマンドライン引数を使用しない場合は、次のように簡単です。

if [ "$1" = --clipboard ]; then
    copy_to_clipboard "$data" # or whatever
else
    printf "%s\n" "$data"     # print to stdout
fi

getoptまたは、コマンドライン引数を使用している場合は、その引数をループに含めます。

つまり、対話型ユーザーはオプションを追加することを覚えておく必要がありますが、.bashrcそのオプションにエイリアスをインストールしたり、それに対応する項目を簡単にインストールしたりすることができます。

alias Task.sh="Task.sh --clipboard"

関連情報