gpt4 book ai didi

linux - printf 使用 in/bin/bash

转载 作者:太空狗 更新时间:2023-10-29 11:42:19 25 4
gpt4 key购买 nike

我在/bin/bash 中使用 printf(OS X 标准 GNU bash,版本 3.2.57(1)-release (x86_64-apple-darwin15)版权所有 (C) 2007 Free Software Foundation, 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 

关于linux - printf 使用 in/bin/bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38551256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com