新しいマークダウンファイルを生成する関数があり、どのように単純化できるのか疑問に思います。
today=$(date +"%F")
title=$1:l
clean_title=${title//[^a-zA-Z0-9]/-}
filename="$today-$clean_title.markdown"
title / clean_titleを1つにまとめることができると思いましたが、そのようにしようとすると、誤った置換のコンソールエラーが発生します${1:l...
。${$1:l...
可能ですか?
答え1
これらの${...}
ビットをネストしますが、将来の読者がコードを読み取ることができるかどうかを検討してください。
() { clean_title=${${1:l}//[^a-zA-Z0-9]/-}; printf "$clean_title" } " BLA "
また、A-Z
以前に小文字を考慮すると、一致が意味をなさない可能性があります。
答え2
では、zsh
パラメータ拡散演算子をネストできます。プロンプト拡張で日付を取得することもできます(%D{%F}
もっと冗長で読みやすいコードが必要な場合は、モジュールにzsh
組み込み関数もあります)。strftime
zsh/datetime
filename=${(%):-%D{%F}}-${${1//[^[:alnum:]]/-}:l}