一度に実行する前に、いくつかのパラメーターに基づいて文字列にコマンドラインを作成するbashスクリプトがあります。コマンド文字列に連結される部分は、各コンポーネントを介したデータの「ストリーミング」を容易にするために、パイプで区切られることになっています。
非常に簡単な例:
#!/bin/bash
part1=gzip -c
part2=some_other_command
cmd="cat infile"
if [ ! "$part1" = "" ]
then
cmd+=" | $part1"
fi
if [ ! "$part2" = "" ]
then
cmd+=" | $part2"
fi
cmd+="> outfile"
#show command. It looks ok
echo $cmd
#run the command. fails with pipes
$cmd
何らかの理由で、パイプが機能していないようです。このスクリプトを実行すると、通常はコマンドの最初の部分(最初のパイプの前)に関連するさまざまなエラーメッセージが表示されます。
だから私の質問は、この方法でコマンドを作成することが可能かどうか、そしてそれを行うための最良の方法は何ですか?
エラーメッセージは何ですか?
—
キャメロンネモ14年
私のスクリプト(この単純化よりもやや複雑)では、「ファイルが見つかりません」と表示されます
—
レナート・ローランド14年
infile
現在のディレクトリに存在すると仮定しても安全ですか?
はい。私のコードでは、ファイルではなくwget -O-です。実際、連結された文字列をコピーしてターミナルに貼り付けるだけで、正常に実行されます
—
レナート・ローランド14年