我有一个创建新 markdown 文件的函数,但我想知道如何简化它?
today=$(date +"%F")
title=$1:l
clean_title=${title//[^a-zA-Z0-9]/-}
filename="$today-$clean_title.markdown"
我想我可以将 title/clean_title 合并为一个,但是当我尝试类似的操作时${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}