fgrep
文をファイルから完全一致のレコードで削除しようとしています。私はコマンドラインでこれを行うことができますが、ksh
スクリプト内ではできません。私が使用していたコードは、コードのこれらの4つのラインに沸く:kshスクリプト内のスペースを含む文字列を含むfgrep
Header='abc def|ghi jkl' #I use the head command to populate this variable
workfile=abc.txt
command="fgrep -Fxv \'$Header\' $workfile" >$outfile
$command
私はSTDINに$command
をechoコマンドは、私が(単一引用符で)コマンドラインに入力しますまさにであり、それは上で動作しますコマンドライン。 ksh
スクリプト(ファイル)内で実行すると、エラーがスペース上で解析されているため、一重引用符は認識されないようです。
$command
変数を使用せずに、ダニックス、エグゼクティブ、eval、一重引用符ではなく二重引用符を試しました。問題は残っている。
人が '$ cmd'変数を構築しようとするときに、通常はシェルが別の経路で解決できる何かをしようとしているからです。あなたは本当に '$ command'を実行する必要がありますか?私は、通常のシェルスクリプトを動作させるためにあなたの努力を集中させて、この余分な間接レベルが本当に必要かどうかを決定します。そして '$ header'の' | 'charについては不明です。 grep reg exでは、これは 'OR'を表します。もちろんシェルでは 'パイプ'です。ここでいくつかの問題は明確ではありません。あなたのQを更新してください(またはこの問題のための戦術を変更してください)。がんばろう。 – shellter
答えがあなたの問題を解決する場合は、その横にある大きいチェックマーク(✓)をクリックして受諾し、オプションで上向きに投票してください(上向き投票には少なくとも15の評判ポイントが必要です)。 他の回答が有益だった場合は、投票してください。受諾およびアップ投票は将来の読者に役立ちます。関連するヘルプセンターの記事(http://stackoverflow.com/help/someone-answers)を参照してください。質問にまだ完全に回答していない場合は、フィードバックを提供してください。最高の解決策を自分で見つけたと感じたら、それを回答として投稿し、自己受け入れます。 – mklement0