質問: atoi(*(buffer + i)) + VALUE; if((*(buffer + i) + VALUE) >= LOOP) printf("%c", (*(buffer + i) + VALUE) - LOOP + 32); else printf("%c", *(buffer + i) + VALUE); } printf("\n"); } } ``` プログラムはあまり関係がないのですが、一応載せておきます。 シーザー暗号をブルーとフォースで解読するものです。 平文 : you will make me happy crypted : (|$-&vyy-znxr-zr-un}}( これを、 ``` perl -e 'print "112\n(|$-&vyy-znxr-zr-un}}(\n"' | ./solve_caesar | grep happy 81 : yo#will make me happy echo '112\n(|$-&vyy-znxr-zr-un}}(\n' | ./solve_caesar | grep happy 81 : you will make me happy ``` ちゃんと、実行して動いているのですが、echoの方は問題がありません。 perl -e の方の実行結果がおかしく、"#" が入っています。 なぜでしょうか?? 分かる方教えてください。 ちなみに、print を使った結果は、echoと同じく大丈夫でした。 Linux 64bit shell はBashではなくzshを使っています。 shellの種類はあまり関係はないと思います・・・・
回答: $- を変数だと思ってるんじゃないでしょうか?