2

我是 bash 脚本的新手。我尝试了以下方法:

filename01 = ''

if [ $# -eq 0 ]
        then
                filename01 = 'newList01.txt'
        else
                filename01 = $1
fi

我收到以下错误:

./smallScript02.sh: line 9: filename01: command not found
./smallScript02.sh: line 13: filename01: command not found

我想我没有正确处理变量,但我不知道如何。另外,我正在尝试使用 grep 从文本文件中提取第二个和第三个单词。该文件如下所示:

1966 Bart Starr QB Green Bay Packers 
1967 Johnny Unitas QB Baltimore Colts 
1968 Earl Morrall QB Baltimore Colts 
1969 Roman Gabriel QB Los Angeles Rams 
1970 John Brodie QB San Francisco 49ers 
1971 Alan Page DT Minnesota Vikings 
1972 Larry Brown RB Washington Redskins 

任何帮助,将不胜感激

4

2 回答 2

6

=当您在 bash 中分配变量时,符号的任何一侧都不应有空格。

# good
filename0="newList01.txt"
# bad
filename0 = "newlist01.txt"

对于第二个问题,请使用awknot grep。以下将从名称存储在的文件的每一行中提取第二项和第三项$filename0

< $filename0 awk '{print $2 $3}'
于 2013-06-06T19:53:28.290 回答
1

在 bash(和其他 bourne 类型的 shell)中,如果变量为空或未设置,您可以使用默认值:

filename01=${1:-newList01.txt}

我建议花一些时间阅读 bash 手册:http ://www.gnu.org/software/bash/manual/bashref.html

这是一种提取名称的方法:

while read first second third rest; do
    echo $second $third
done < "$filename01"
于 2013-06-07T00:12:53.090 回答