命令替换的正确格式

Proper formatting of Command Substitution

我正在尝试添加当前正在播放的歌曲(如果我的 ZSH 提示中有一首歌曲)。我正在使用 JXA 命令 osascript -l JavaScript -e "Application('Music').currentTrack.name()"。我试图将它分配给一个变量。然后回显该命令。

precmd() {
  SONG=$( echo -e osascript -l JavaScript -e "Application('Music').currentTrack.name()" )
  LEFT=echo $SONG
  RIGHT="$(dracula_time_segment) $(battery_pct_prompt)"
  RIGHTWIDTH=$(($COLUMNS-${#LEFT}))
}

我尝试了多种变体,例如:在表达式内部和外部回显以及各种标志。

您根本不需要 echo,正如您稍后在设置 RIGHT 时的命令替换所证明的那样;命令替换只需要一个命令并执行它。

SONG=$(osascript -l JavaScript -e "Application('Music').currentTrack.name()")
LEFT="$SONG"

你可以结合前两个命令; SONG 不需要。

LEFT=$(osascript ...)