シェル芸botで遊んでた際、echo-sdをネストさせて表示するという処理があったので、なんかいい感じに回数増やせないかなと思って調べてみた。
で、パイプ付きの処理をブレース展開させてevalで実行させて、その時に最後にcatで出力を読み込ませてみたらいい感じに処理させることができた。
command | eval 'command |'{,,} cat
例えば、echo-sdをネストさせる場合だと以下のようになる。
echo-sd | eval 'xargs echo-sd |'{,,,} cat
他に使いみち無いかな…と思って考えてみたところ、hashのストレッチングに...
CSV形式で書かれているファイルにファイルPATH、オーナー、グループ、権限を書いておき、それを読みだしてワンライナーでchmod、chownを実行する方法を探していたが、とりあえず以下のようにすれば実現できることがわかった。
なお、ファイルの中身は以下のように書かれているとする。
[root@test-centos7 ~]# cat /root/test.lst
755,test,test,/work/aaaaa.txt
777,test,test,/work/aaaaa.txt.bk
666,test,test,/work/aaaaa2.txt
555,test,test,/wor...
シェルスクリプトを作成する際、事前に定めた変数名をスクリプト内で他の変数に代入し、それを展開・利用したいシチュエーションもあるだろう。
そんな時は、evalコマンドを用いて変数を2重展開することで対応可能だ。
例えば、以下のようなスクリプトを作成したとする。
#!/bin/sh
# 変数 VALに値が入力されている
VAL="test"
# 変数 EVAL_VALに、変数名である「VAL」という文字列を入力
EVAL_VAL="VAL"
# 変数 EVAL_VALを呼び出す
echo $EVAL_VAL
これをそのまま実行した場合、当然ながら出力される値は「VAL」となる。
...