Bash:非法变量名错误



我正在尝试使用grep从文本文件中提取字段。我想将行号存储到一个bash变量中以备以后使用,但是我得到了一个非法的变量名错误。这是我脚本的一部分:

#!/bin/csh
set echo
grep -n -m 1 "HR${4}" Tossed/length${1}/TL${1}D2R${2}-${3}TT.txt | cut -d : -f 1
To_Start=$((grep -n -m 1 "HR${4}" Tossed/length${1}/TL${1}D2R${2}-${3}TT.txt | cut -d : -f 1))

输出:

[maurerj1@rucc-headnode Tenengolts_Generate]$ ./flow_LBBH.sh 7 0 0 0
grep --color=auto -n -m 1 HR0 Tossed/length7/TL7D2R0-0TT.txt
cut -d : -f 1
1                          #This is the right number
Illegal variable name.     #why is this not working?

从我读到的,在bash变量名中允许大写,小写和下划线,所以我做错了什么?

我通过将csh更改为bash,删除set echo(由于将所有输入变量更改为"echo"而导致一些奇怪的问题)并将$(())更改为$()来修复此问题。

$(( expr ))语法用于计算,因此出现了令人困惑的消息。

ex: echo $((4+4))产8

你想计算一个命令的结果,简单的括号就可以了:

To_Start=$(grep -n -m 1 "HR${4}" Tossed/length${1}/TL${1}D2R${2}-${3}TT.txt | cut -d : -f 1)

简单的复制来证明我的观点:

To_Start=$(echo a:b | cut -d : -f 1)
echo $To_Start

收益率:

a

最新更新