如何在带有变量的bash脚本中使用“head”?

时间:2014-07-30 16:58:07

标签: bash unix-head

我已经尝试创建一个脚本,可以根据我创建的一些变量读取文件中的某一行。

SCRIPTNUM=$(tail -1 leet.txt)
LINE=$(echo $SCRIPTNUM | python leetSolver.py)
PART1=$(head "-$LINE" leet.txt)
FLAG=$(printf "$PART1" | tail -1)
FLAGFORMAT="$FLAG\n"
printf $FLAGFORMAT

由此我遇到的最大问题是我收到此错误:

head: invalid trailing option -- 
Try `head --help' for more information.

当通过终端一次输入一行时,代码工作正常。有没有办法让这段代码有效?值得注意的是,使用常数(即头-5)可以工作。

2 个答案:

答案 0 :(得分:1)

此处的快速测试似乎表明问题在于您的$LINE变量具有尾随空格(即'5 '而不是'5')。 尝试删除它们。

$ head '-5g' file
head: invalid trailing option -- g
Try `head --help' for more information.

$ head '-5.' file
head: invalid trailing option -- .
Try `head --help' for more information.

$ head '-5 ' file
head: invalid trailing option --
Try `head --help' for more information.

答案 1 :(得分:0)

更改此行

LINE=$(echo $SCRIPTNUM | python leetSolver.py)

LINE=$(echo $SCRIPTNUM | python leetSolver.py | tr -d '\r\n ')

将删除任何尾随换行符或回车符或空格。

或者,如果您更喜欢sed

LINE=$(echo $SCRIPTNUM | python leetSolver.py | sed 's/[^0-9]//g' )

或者,如果您喜欢tr

LINE=$(echo $SCRIPTNUM | python leetSolver.py | tr -cd '[:digit:]' )

将删除所有非数字。