我正在创建一个bash别名,所以我可以cd到一个给定的目录并运行一个打开pwd的命令。我的脚本运行得很好,但是当我抓住$ {pwd}时,它抓住了bash_profile文件的密码。如何让它抓住呼叫终端窗口的密码?
alias opencoda="osascript -e 'tell application \"Coda\"' -e 'tell document 1' -e 'change local path \"${pwd}\"' -e 'end tell' -e 'end tell'"
解 我不确定为什么上面给出了bash_profile目录,而这个目录是终端目录,但是仍然如此:
alias opencoda='osascript -e "tell application \"Coda\"" -e "tell document 1" -e "change local path \"${PWD}\"" -e "end tell" -e "end tell"'
我不得不更改周围的报价..显然还需要在那里保留双引号。
我写的另一个有趣的Coda bash脚本:
从当前目录中打开一个给定文件:
function coda() { osascript -e "tell application \"Coda\"" -e "tell document 1" -e "open \"${PWD}/$@\"" -e "end tell" -e "end tell";}
例)coda myfile.txt
答案 0 :(得分:2)
当你在双引号字符串中引用变量时,Bash会在那里替换变量的值。您需要做的只是逃避$
,以便不进行替换。这样,当您运行opencoda
时,Bash将在命令中看到变量引用$PWD
,并在那时进行替换。
alias opencoda="... \${PWD} ..."
(顺便说一句,在我的电脑上只有$PWD
[大写]有效。)
答案 1 :(得分:0)
我不确定这是做什么的,所以这是一个相当疯狂的猜测,但我会尝试转义变量$
中的\${pwd}
。然后在第一次解析时,.bash_profile会将它评估为${pwd}
,然后传递正确的变量。