这些days.i'm学习shell脚本的fun.When我喜欢阅读手册的例子:
set $(wc -l $title_file)
num_titles=$1
set $(wc -l $tracks_file)
num_tracks=$1
和我有短暂的理解是,命令,设置,指定$ 1和设定值$ 1到num_titles。 但是,我不知道为什么要用-l作为该命令的选项,顺便set.And,将任何人可以解释它的整个故事?THX
这些days.i'm学习shell脚本的fun.When我喜欢阅读手册的例子:
set $(wc -l $title_file)
num_titles=$1
set $(wc -l $tracks_file)
num_tracks=$1
和我有短暂的理解是,命令,设置,指定$ 1和设定值$ 1到num_titles。 但是,我不知道为什么要用-l作为该命令的选项,顺便set.And,将任何人可以解释它的整个故事?THX
首先set
设置一个环境变量。 根据其手册页使用语法set var = value
或set var [n] = word
查看手册页类型man set
。
在这种情况下,set使用第二种语法制作$1 = $(wc -1 $titlefile)
,然后将num_titles设置为$ 1作为常规变量,因为使用的语法。
wc
是wordcount命令,并显示文件中的行,字符和单词。
wc -l
告诉wc根据wc手册页逐行计数,以查看手册页类型man wc
。
查看Linux Shell Scripting Tutorial A Beginner's handbook和Advanced Bash-Scripting Guide作进一步参考。
我明白了,thx.And顺便说一下,无论何时,默认情况下,我使用命令,设置,它会将新值设置为第一个参数? – 2012-03-08 06:18:08
是的,这是正确的,根据设置手册页子句'其余 参数是位置参数,并按 订单分配给$ 1,$ 2,....' – Appleman1234 2012-03-08 07:40:54
在sh中,'set'不使用所描述的语法这里。在csh中,这里使用的语法设置了一个变量,但不是一个环境变量。 – 2012-03-08 13:17:39
-l开关计数的数目在你的情况下,在指定文件 中的行,它将计算titles文件中的行数并将其设置为num_titles变量(并计算由tracks_file变量指定的文件中的行数并设置该值到num_track变量)
,你可以简单地尝试 厕所-l命令行上 看到的价值它打印出
我明白了,thx.And顺便说一下,无论何时,默认情况下,我使用命令set会将新值设置为第一个参数吗? – 2012-03-08 06:16:02
是的。所以,如果你做**设置abc **变量$ 1现在等于“a”,$ 2 = b和$ 3 = c – 2012-03-08 06:32:47
这个例子很奇怪。跳过set命令会更常见,只需写下:num_titles = $(wc -l $ title_file) – 2012-03-08 13:18:43