Bash shell脚本101 - 变量定义,pbcopy等

时间:2014-11-04 08:40:03

标签: macos bash terminal encodeuricomponent pbcopy

我正在尝试创建一个(我的第一个)bash脚本,但我需要一些帮助。我有以下内容:

#!/bin/bash

echo "Write a LaTeX equation:" 
read -e TeXFormula

URIEncoded = node -p "encodeURIComponent('$(sed "s/'/\\\'/g" <<<"$TeXFormula")')"

curl http://latex.codecogs.com/gif.latex?$URIEncoded -o /Users/casparjespersen/Desktop/notetex.gif | pbcopy

我希望它:

  1. 需要用户输入(LaTeX方程式)
  2. URIEncode用户输入(Google的最高结果是使用node.js,但任何事情都可以..)
  3. 对此网站执行cURL调用,将公式转换为GIF图像
  4. 将图像复制到占位符,因此我可以将其粘贴到像OneNote,Word等应用的笔记中。
  5. 我的脚本出现以下故障:

    • URIEncoded未定义,因此我的变量定义出现了问题。
    • 使用pbcopy复制时,会复制图像的加密文本内容,而不是实际图像。这有解决方法吗?否则,脚本可以自动打开图像,我可以手动Cmd + C内容。

1 个答案:

答案 0 :(得分:2)

  

URIEncoded未定义,因此我的变量有问题   定义。

该行应为

URIEncoded=$(node -p "encodeURIComponent('$(sed "s/'/\\\'/g" <<<"$TeXFormula")')")

=符号周围没有空格,并使用$()构造实际执行命令,否则,命令的文本将被分配给变量。

  

当我使用pbcopy复制加密的文本内容时   图像被复制,而不是实际图像。是否有解决方法   这个?否则,脚本可以自动打开图像和我   可以手动Cmd + C的内容。

pbcopy从stdin获取输入,但是你告诉curl将输出写入文件而不是stdout。试试吧

curl http://latex.codecogs.com/gif.latex?$URIEncoded | pbcopy

或者,对于您描述的第二个选项

curl http://latex.codecogs.com/gif.latex?$URIEncoded -o /Users/casparjespersen/Desktop/notetex.gif && open $_