Bash: 非法变量名错误

Bash: illegal variable name error

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

#!/bin/csh

set echo

grep -n -m 1 "HR" Tossed/length/TLD2R-TT.txt | cut -d : -f 1

To_Start=$((grep -n -m 1 "HR" Tossed/length/TLD2R-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 变量名中允许使用大写字母、小写字母和下划线,所以我做错了什么?

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

例如:echo $((4+4)) 产生 8

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

To_Start=$(grep -n -m 1 "HR" Tossed/length/TLD2R-TT.txt | cut -d : -f 1)

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

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

产量:

a

我通过从 csh 更改为 bash、删除 set echo(通过将所有输入变量设为 "echo" 引起了一些奇怪的问题)并从 $(()) 更改为 $ 来解决问题().