String 字符串和整数混淆了???猛击

String 字符串和整数混淆了???猛击,string,bash,unix,int,String,Bash,Unix,Int,我正在用bash编写脚本 我有一个数组,如果我在$I变量中找到一个Id=,我想添加它,否则我想添加文本null并递增,直到两个变量的值相同 例如: $i=10101 $Id可以接受此值(10101101021010510107) 这是我代码的一部分 txts=() for line in $(cat file.txt) do Id="$(echo $line | cut -d ' ' -f1)" #I want to know how to transform

我正在用bash编写脚本

我有一个数组,如果我在$I变量中找到一个Id=,我想添加它,否则我想添加文本null并递增,直到两个变量的值相同

例如:

$i=10101

$Id可以接受此值(10101101021010510107)

这是我代码的一部分

txts=()
for line in $(cat file.txt)
do
    Id="$(echo $line | cut -d ' ' -f1)"
    #I want to know how to transform the Id into a int ????
    eId=$(echo $Id + 0) 
    txt="$(echo $line | cut -d ':' -f2)"
    if [[ $i -eq $eId ]]; then
       txts+=("$txt")
       i=$((i+1))
    else
        for (( c=$i; c=$eId; c++))
        do
            txts+=("null")
            i=$((i+1))
        done
        i=$(($eId))
    fi
done
使用以下命令编辑代码: 这可能吗?请解释原因

编辑1 起始指数为10101

我有一个带有索引和文本的文件,我想知道如果没有,它们是否有序,如果缺少索引,它们将文本置为null,最后我想要的是一个包含以下内容的数组:

10101 10102 无效的 无效的 10105 无效的
10107

一堆语法问题,用于修复它们只需在shellchek的输出中声明您的输入就可以了您必须在
bash
中这样做吗?你只是想用基于键的适当数字来填补空白,对吗?您是否查找了
Awk
-eq
-ne
-lt
gt
等一起用于数字比较。
=
=,等等用于字符串比较<代码>[“01234”-等式1234]&&echo yes
回显
yes
,但
[“01234”=1234]&&echo yes
不回显。顺便说一下,在某些版本的bash中,您可以使用
declare-i
在bash中声明一个整数变量,但我不确定这有什么实际区别。此外,在某些版本的bash中,还可以使用
let
命令为变量指定数值表达式<代码>让a=b+c或
让a++
来解决一系列语法问题,只需使用所需的输出说明您的输入shellchek将使用的代码您必须在
bash
中执行此操作吗?你只是想用基于键的适当数字来填补空白,对吗?您是否查找了
Awk
-eq
-ne
-lt
gt
等一起用于数字比较。
=
=,等等用于字符串比较<代码>[“01234”-等式1234]&&echo yes
回显
yes
,但
[“01234”=1234]&&echo yes
不回显。顺便说一下,在某些版本的bash中,您可以使用
declare-i
在bash中声明一个整数变量,但我不确定这有什么实际区别。此外,在某些版本的bash中,还可以使用
let
命令为变量指定数值表达式<代码>让a=b+c或
让a++
txts=()
while IFS='' read -r line || [[ -n "$line" ]]; do
Id=$(echo "$line" | cut -d ' ' -f1)
eId=$(echo $Id + 0) 
txt="$(echo line | cut -d ':' -f2)"
if [[ $i -eq $eId ]]; then
   txts+=("$txt")
   i=$((i+1))
else
    for (( c=i; c=eId; c++))
    do
        txts+=("null")
        i=$((i+1))
    done
    i=$((eId))
fi
done < "Vlan_Port.txt"
./script.sh: line 27: = + 0: syntax error: operand expected (error token is "= + 0")