(curlとcutを使用して)値をフェッチし、それらからファイル名を作成するbash関数があります。ここで、別のパラメーターのセットを必要とする2番目の命名スキームをサポートしたいと思います。
例:
#!/bin/bash
TEMPLATE="%02i. %s.txt"
foo() {
a="Imagine these to"
b="be set dynamically"
c="42"
filename="$(printf "$TEMPLATE" "$c" "$a")"
# second: filename="$a - $b.txt"
# or: filename="$(printf "%s - %s.txt" "$a" "$b")"
echo "$filename"
# generate file
}
# actual script loops over:
foo
値の1つは、必要に応じて先行ゼロで埋める必要がある数値です。したがってprintf
、現在の実装ではそうです。
別のテンプレートをグローバルに設定するだけでこれを実装する方法はありますか?これには、テンプレートがインデックスによってパラメータにアクセスできるか、少なくとも一部をスキップできる必要があります。
そうでない場合、私の選択肢は何ですか?テンプレートはコマンドラインパラメータで選択され、初期化後に変更されません。
動作しないもの:
- bashのマニュアルページは、長さゼロの出力は不可能であることを示唆しています(値をスキップするため)
- Cのprintfのマニュアルページには「%m $」構文が記載されていますが、これは明らかにbashではサポートされていません。
- 関数自体が値を生成するため、パラメーターとして完全なファイル名を受け取ることはできません