我在/bin/bash 中使用 printf (OS X 标准 GNU bash,版本 3.2.57(1)-release (x86_64-apple-darwin15) 版权所有 (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
命令中,这样就可以像 super 按钮一样工作:
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
关于linux - printf 使用 in/bin/bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38551256/