
私はシェルの文字列操作ツールを介してログファイルを生成するために次のコードを使用しています。ファイル名があり、エラーが発生した場合は、err.logを含むログファイルを生成する必要があります。
仮定は次$fileName
のとおりですtest.tmp
。
echo ' l_error_msg' >> $UPLOAD/output/$fileName.err
これにより、というファイルが生成されますtest.tmp.err
。
だから私は次のコードを使って生成してみましたtest.err
。
echo ' l_error_msg' >> $UPLOAD/output/${$fileName%.*}.err
しかし、これはうまくいきません。
答え1
変数が与えられると、foo="bar.baz"
正しい削除構文.baz
は次のようになります${foo%.*}
。
$ foo="bar.baz"
$ echo ${foo%.*}
bar
重複した部分を削除する$
と、期待どおりに機能します。
$ fileName="test.tmp"
$ echo ${fileName%.*}.err
test.err
答え2
この試み
echo ' l_error_msg' >> $UPLOAD/output/`echo $fileName|awk -F. '{print $1}'`.err