我已经尝试创建一个脚本,可以根据我创建的一些变量读取文件中的某一行。
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)可以工作。
答案 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:]' )
将删除所有非数字。