我在/ bin / bash(OS X标准GNU bash版本3.2.57(1)-发行版(x86_64-apple-darwin15))中使用printf(C)2007自由软件基金会,Inc.
#!/bin/bash
latest_version=\
$((curl -s http://java.com/en/download/installed8.jsp 2>/dev/null || wget -q -O - http://java.com/en/download/installed8.jsp) | grep 'latest8' |sed -E "s/.*= //" |tr -d "';")
echo $latest_version
printf "%s \n" $latest_version
我想获取字符串“ 1.8.0_102”(截至2016/7/24)
由此可见
#echo
1.8.0_101
#printf
8.0_101
我想将字符串设置为红色,并且脚本将同时在OS X和Linux中运行,所以我不想使用echo。
为什么我不能通过printf获得1.8.0_101?
更进一步,这有什么问题吗?
printf "Get the latest Java \033[1;31m %s \033[m from Oracle.\n" $latest_version
它也行不通...
我有一个提示...当我把
latest_version=1.8.0_101
然后就可以了。
所以$()输入到latest_version的变量工作不正确?
如果执行:
printf "%q \n" $latest_version
你得到:
$'1.8.0_101\r'
您会看到多余的\r
(回车符)字符。
要解决此问题,请\r
在您的tr
命令中添加,它将像超级按钮一样工作:
latest_version=$((curl -s http://java.com/en/download/installed8.jsp 2>/dev/null || wget -q -O - http://java.com/en/download/installed8.jsp) | grep 'latest8' |sed -E "s/.*= //" |tr -d "';\r")
printf "%s \n" $latest_version
输出:
1.8.0_101
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句