4

我一直在尝试创建一个脚本,该脚本可以在给定我创建的一些变量的情况下从文件中读取特定行。

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.

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

4

2 回答 2

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.
于 2014-07-30T17:02:24.450 回答
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:]' )

将删除所有非数字。

于 2014-07-30T17:07:10.473 回答