命令在脚本中运行不正确



命令:

value=${value%?}

将从变量中删除最后一个字符。有什么合乎逻辑的原因为什么它不能在脚本中工作吗?在我的脚本中,它没有任何效果。

if [[ $line =~ "What I want" ]]
    then
            if [[ $CURRENT -eq 3 ]]
            then
                    echo  "line is " $line 
                    value=`echo "$line" | awk '{print $4}'`
                    echo "value = "$value   
                    value=${value%?}
                    echo "value = $value "
                    break
            fi
fi

我不能发布整个脚本,但这是我所指的片段。循环输入正确,但 2 个回显$value行返回相同的内容。

编辑 - 这个问题仍然存在。该代码在终端中细行工作,但在脚本中一起失败。

Echo 在此行

中添加了一个额外的行字符$value:

value=`echo "$line" | awk '{print $4}'`

并且 afaik 多余的字符被%? 删除,所以它似乎根本没有改变任何东西。

请尝试改用echo -n,这不会向字符串添加n

value=`echo -n "$line" | awk '{print $4}'`

由于您只提供了代码中的相关部分,而不是整个文件,因此我假设文件的第一行为"#!/bin/sh"。这是你的问题。您尝试执行的操作(参数扩展)特定于 bash,因此除非/bin/sh 通过符号链接指向 bash,否则您正在不理解 bash 参数扩展的 shell 中运行脚本。

要了解/bin/sh 到底是什么,你可以这样做:ls -l/bin/sh。为了纠正这种情况,通过将顶部的"shebang"更改为"#!/bin/bash"来强制脚本在 bash 中运行

相关内容

  • 没有找到相关文章

最新更新