【问题标题】:Proper formatting of Command Substitution命令替换的正确格式
【发布时间】:2019-11-12 17:01:53
【问题描述】:

如果我的 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}))
}

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

【问题讨论】:

    标签: shell applescript zsh oh-my-zsh zshrc


    【解决方案1】:

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

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

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

    LEFT=$(osascript ...)
    

    【讨论】:

    • 当我尝试仅使用变量时,它会将歌曲的名称评估为应该运行的命令。不过,我可能仍在正确地做某事。但我也确实回答了这个问题,它似乎有效。如果我在变量前添加回声,使用你的方法也适用于我。
    • 因为您根本没有对LEFT 的原始分配使用命令替换。 LEFT=echo $SONGLEFT=$(echo $SONG) 不同。
    • 非常感谢您的解释。
    猜你喜欢
    • 2017-06-29
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 2014-05-08
    • 1970-01-01
    • 2018-03-15
    相关资源
    最近更新 更多