특정 변수를 기반으로 파일 이름을 생성한다고 가정해 보겠습니다.
track=01
title="Some title"
album="Some album"
echo ${track}. ${title} (${album})
-> 01. Some title (Some album)
이제 케이스가 $album
비어 있으면 얻을 수 있습니다.
->01. Some title ()
이 경우에는 괄호를 제거하고 싶습니다.
->01. Some title
내가 원하는 것은푸바이와 같이:
%길%. %제목% [(%앨범%)]
bash(또는 zsh)에서 if...fi를 사용하지 않고 위와 같은 단일 표현식으로 수행하는 것이 가능합니까?
답변1
bash: 응, 하지만 별로 예쁘지는 않아:
filename="${track}. ${title}${album:+ ($album)}"
${var:+value}
$var가 설정되어 있고 비어 있지 않은 경우 "값"으로 확장됩니다 .
시연:
$ album="Some album"
$ filename="${track}. ${title}${album:+ ($album)}"
$ declare -p filename
declare -- filename="01. Some title (Some album)"
$ album=""
$ filename="${track}. ${title}${album:+ ($album)}"
$ declare -p filename
declare -- filename="01. Some title"
$ unset album
$ filename="${track}. ${title}${album:+ ($album)}"
$ declare -p filename
declare -- filename="01. Some title"