2
私は< &と> &のトークンについてちょっと混乱しています。私の例の一番下に、私はちょうど< 3と> 4をcatの引数として使用できませんでしたか?私はそれを試したのであなたができないことを知っているが、私はなぜ理解していないのですか?私はファイル記述子3と4を複製していません。ファイル記述子3と4から入力と出力をリダイレクトしようとしています。なぜこれらの2つのトークンにアンパサンド記号を含める必要がありますか?"&>"と "<&"トークンの質問
#!/bin/bash
case $# in
0)
exec 3<&0 4<&1
;;
1)
exec 3< $1 4<&1
;;
2)
exec 3< $1 4> $2
;;
*)
echo "bad"
return 1
;;
esac
cat <&3 >&4
exec 3<&- 4<&-
しかし、ケース2では3つの< $1 and 4> $ 2があります。これらはファイル記述子であり、アンパサンドは含まれていません。また、なぜシンボルが大きくてあまりにも少なくなった後にスペースがあるのでしょうか? – James
これらは既存のファイル記述子ではありません。彼らは、ファイル名 "$ 1"を開いた結果を保存する場所です。代わりに既存のfdをコピーしたい場合は、 '<&'を使用します。 –