2

script.sh という名前の BASH スクリプトがあります。これは 3 つの引数を取り、実行可能ファイルを実行します。最初の 2 つは単なる数値ですが、最後の 2 つは入力ファイルを指定する引数です。実行可能ファイルの引数として入力を使用し、標準入力の代わりに「<」を使用して、スクリプトで実行可能ファイルを実行したいと思います。(すなわち

bash script.sh 5 1 input.txt

は BASH スクリプトを呼び出します。script.sh の内容は次のとおりです。

#!/bin/bash

command1="./l${1}t${2} $3"
command2="./l${1}t${2} < $3"

echo + ${command1}
${command1}

echo + ${command2}
${command2}

コマンド1をエコーすると、

./l5t1 input.txt

これはまさに私が望んでいるものであり、問​​題なく動作します。

command2 をエコーすると、

./l5t1 < input.txt

これもまた私が欲しいものです。問題は、スクリプトが実行する実際のコマンドが

./l5t1 '<' input.txt

もちろん、これは私のプログラムでセグメンテーション違反を引き起こします。

コマンド 2 を実行して、エコー出力に表示されているとおりに文字列を実行できる方法があるかどうかを知りたいです。正直なところ、一重引用符が < 文字の前後に挿入されている理由がわかりません。

4

1 に答える 1