1

次のようにシェルスクリプトを実行したいとします。

./script.sh < in.txt > out.txt

stdinがリダイレクトされるファイルの名前、つまりこの例では「in.txt」を解析するにはどうすればよいですか?

私が持っている場合、私はそれを知っています:

./script.sh in.txt out.txt

スクリプトファイルで以下を使用して「in.txt」を取得できます

eval var1="$1"

しかし、入力リダイレクトについては理解できません。ありがとう!

4

3 に答える 3

2

まず、何も「評価」する必要はありません。

var1="$1"

十分です。

2番目:「/ dev / stdin」、「/ proc / self / fd / 0」、またはOSが提供するものに満足しない限り、それはできません。たとえば、http://plan9.bell-labs.com/sys/doc/lexnames.htmlを参照してください。plan9はfd2path()を追加する必要がありました。これは、(驚き、驚き)以前は存在しなかったためです。

于 2013-03-24T14:13:08.860 に答える
1

これは移植可能なソリューションではありませんが、一部のシステムでは機能します(入力ストリームが通常のファイルの場合)。

#!/bin/sh
echo Input file: $( readlink -f /proc/$$/fd/0 )
于 2013-03-24T20:18:48.257 に答える
0

ただ行う:

#!/bin/sh
infile=$1
outfile=$2

cat < $1
echo > $2

または、本当に凝ったものにしたい場合は、stdinとstdoutを変更できます。

#!/bin/sh
1<$1
1>$2
echo "test"
于 2013-03-24T10:32:53.673 に答える