Bashで特定のスクリプトが呼び出されたかどうかを知る方法はありますか?
$ myscript.sh myfile
または:
$ myscript.sh < myfile
myfile
一部のスクリプトでは常に with のコンテンツにアクセスします$1
が、今ではさまざまな状況に応じて動作を変更したいと思います。
編集:リダイレクトなしで呼び出すときの3番目のケースも必要です。
$ myscript.sh
ベストアンサー1
編集する:端末やファイルの入力を正しく検出するように-t
変更されました。-t 0
ここで重要なのは、入力が端末から来るのかファイルから来るのかを知ることです。これに対するテストがあります(man test
参照-t
)。
bashスクリプトを実行するとします。
if [ -t 0 ]; then
echo "Input from terminal"
if [ $# -eq 0 ]; then
echo "No input files specified on command line. Error." >&2
else
echo "Input file given on command line. It is $1"
fi
else
echo "Input coming from stdin"
fi
上記のechoステートメントを実際のコードに置き換えることで、さまざまなシナリオを処理できます。
アップデート、クイックテストスクリプト:
#!/bin/bash
[ -t 0 ] && echo "t is true" || echo "t is false"
ランニング:
$ test.sh testfile
t is true
$ test.sh < testfile
t is false
$