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.

端末から一度に 1 行ずつ入力すると、コードは正常に機能します。このコードを機能させる方法はありますか? 定数 (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 に答える