私は、文字列から先頭のタブ/スペースを除去することになっている短いbashスクリプトを書いた:バッシュの引用の挙動とSEDが
#!/bin/bash
RGX='s/^[ \t]*//'
SED="sed '$RGX'"
echo " string" | $SED
それは、コマンドラインから動作しますが、スクリプトはこのエラーを取得します。
をsed: -e expression #1, char 1: unknown command: `''
私の推測では、引用符に何か問題がありますが、わかりません。
これは受け入れられますが、sedコマンドとRGXを1つの文字列にまとめることは可能ですか? – krs1
@ krs1、この場合、実際はありません。 '$ RGX'が1つの引数として残るようにする必要があります(そのスペースが2に解釈されることはありません)が、パイプの後に' sed'と '$ RGX'の間にスペースが必要ですあなたが 'sed $ RGX'という名前のプログラムではなく' sed'に文字列をパイプすることを試みていることを知ってください。 – jedwards
実際には、変数を展開する前に変数を展開する 'eval'を使って行を実行すると、それらをまとめてまとめることができます。詳細については 'man bash'と" eval "(" SHELL BUILTIN COMMANDS "のマンページの正しい場所に前後にスペースを入れて検索)を検索してください。 – ghoti