【问题标题】:Commandline subtitution on ksh is not being assigned to varibaleksh 中的命令行替换未分配给变量
【发布时间】:2021-02-11 15:29:39
【问题描述】:
var2=$(echo "{$1}" | grep 'Objects that are still invalid after the validation:' | cut -d : -f2 | sed 's/ //g')
echo $var2

上面的命令行替换不起作用ksh,变量每次都是空白的,下面的命令也试过了

var2="$(echo "{$1}" | grep 'Objects that are still invalid after the validation:' | cut -d : -f2 | sed 's/ //g')"
var2=`echo "{$1}" | grep 'Objects that are still invalid after the validation:' | cut -d : -f2 | sed 's/ //g'`
var2=`echo "$1" | grep 'Objects that are still invalid after the validation:' | cut -d : -f2 | sed 's/ //g'`

请帮我解决问题。该命令在 ssh 之后在远程服务器上使用。如果在没有 ssh 的情况下直接在服务器上执行,这些命令将在远程服务器上运行。

【问题讨论】:

    标签: unix less-unix


    【解决方案1】:

    $1 应该是什么?第一个问题是它应该写成$1${1}。写成{$1} 是完全错误的。

    还有grepcut的无用用法。以下作品:

    var2=$(echo ${1} | sed -ne 's/ //g' -e 's/Objectsthatarestillinvalidafterthevalidation:\(.*\)/\1/p')
    

    【讨论】:

    • $1 是一个输入字符串变量,已使用 {$1},"{$1}",$1 所有值并尝试使用简单的命令,但没有一个被分配给变量。
    • 那你的输入一定有问题。以下工作没有问题:x="Objects that are still invalid after the validation: foo bar" && var2=$(echo ${x} | sed -ne 's/ //g' -e 's/Objectsthatarestillinvalidafterthevalidation:\(.*\)/\1/p') && echo ${var2}。输出:foobar
    猜你喜欢
    • 2020-01-31
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2021-06-11
    • 1970-01-01
    • 2019-10-17
    相关资源
    最近更新 更多