Я пытаюсь извлечь поле из текстового файла, используя grep. Я хочу сохранить номер строки в переменной bash для более поздней, но я получаю недопустимую ошибку имени переменной. Это часть моего сценария: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))
Это выход:
[[email protected] 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?
Из того, что я прочитал, прописные буквы, строчные буквы и символы подчеркивания допустимы в Баш имена переменных, так что я делаю неправильно?
Одна проблема: 'set echo' очищает все аргументы, которые вы передаете на свой скрипт, и устанавливая' $ 1' в строку 'echo'. Не очевидно, что вы намерены этой линией. – chepner
Ваш вопрос помечен тегом [tag: bash], и ваш заголовок включает слово «Bash», но ваш скрипт, похоже, использует 'csh'. По крайней мере, это то, что вызывает линия shebang. Не могли бы вы прояснить и исправить либо тег/заголовок, либо shebang, чтобы они были согласованными. – rici