JSTそれでは、実際に順を追ってやってみましょう。記号だけでアルファベット得るには、以下のエラーメッセージを使います。[arguments]エラーメッセージは、標準エラー出力の方にでるので標準出力に向けるよう1と2を使ってリダイレクトします。(この後1と2は使いません)編集結果は変数に入れます。Aとzしか使えない縛りなので、ここではAを使います。[arguments]使っているディストリや言語環境でメッセージが異なったりします。そのため、変数展開で変化のない箇所だけ取り出します。[arguments]アルファベットaefgilmnrstuを得ることができました。]変数展開を利用すると、この文字列を切り出すsubstringのような機能を実現できます。この配列からlsの実行は、以下でできます。${A:3:1}${A:19:1}さて、このままだと使えるアルファベットが限定されています。dateもできませんし、echo,grep...よく使うコマンドも大半が利用できません。なんとか使えるアルファベットを増やす必要があります。使えるアルファベットを増やすには、ブレース展開を使うのがよさそうです。Aとzだけでアルファベットを全て得られます。zこれを変数に入れればいいですね。echoとかで出力した結果を変数に入れる必要があります。echoが使えませんね。使えるアルファベット(aefgilmnrstu)からechoの代替を探しましょう。{z..A}さっきの変数展開を駆使して、setを実行します。実行結果は、なんと位置パラメータに入る仕様です。Aやったね!これでdateも実行できるはずです。JSTできましたね!まだ終わりじゃないです。数字使っている所をなんとかする¶まだ数字が入っている所がありますね。これを何とかしましょう。一つの文字zをここで変数として使います。数字を一切使わずに目的の数値を計算して出力します。しんどいのは、一度計算に利用した変数zは、0に戻ることもなく、そのまま次の処理に引き継がれることです。こんな感じで計算しておりますが、前提として変数zの初期値が1であったり、0であったりする必要があります。自分自身でXORすると0になる。なんかよくわかんないけど1になる。全部載せるのが大変なので、dateで使う数値だけに絞っています。