「if」を変数に設定して、bashスクリプトでddコマンドを取得しようとしています。変数は /dev/zero の場合もあれば、<(yes $'\01' | tr -d "\n") のように複雑な場合もあります。
後者を機能させることができるようです。
write_file=/dev/zero
dd if=$write_file bs=2048 seek=1 of=/dev/sda count=524288
それはうまくいきます。
write_file="<(yes $'\01' | tr -d "\n")"
dd if=$write_file bs=2048 seek=1 of=/dev/sda count=524288
これはうまくいきません。私は得る
dd: invalid option -- 'd'
Try `dd --help' for more information.
しかし、私はストレートを行う場合
dd if=<(yes $'\01' | tr -d "\n") bs=2048 seek=1 of=/dev/sda count=524288
スクリプトでは正常に動作します。
実行する必要があるエスケープがいくつかあると確信していますが、これを行う方法を理解するためのbashの専門家の近くにはいません!
更新:以下の提案から試しました
write_file="<(yes $'\01' | tr -d \"\n\")"
dd if="$write_file" bs=2048 seek=1 of=/dev/sda count=524288
そして得た
dd: opening `<(yes $\'\\01\' | tr -d "\\n")': No such file or directory