シェルスクリプトにコマンドを添付する方法を覚えていません。私は検索しました追加、次へ追加、つながる、そして多くは成功しませんでした。
基本的に私
belly = tail -n +"$HEAD" "$1" | head -n $((TAIL-HEAD+1))
if [ -z "${NUMBER+x}" ]; then # check if NUMBER exists
tail -n +"$HEAD" "$1" | head -n $((TAIL-HEAD+1))
else
tail -n +"$HEAD" "$1" | head -n $((TAIL-HEAD+1)) | cat -n
fi
うまくいきますが、反復的なロジックが好きではありません。関数や試用版を使用できることを知っていますが、これを行うより簡単な方法はありますか?私の心の中には次のようなものがあります。
belly = tail -n +$HEAD $1 | head -n $((TAIL-HEAD+1))
if [ -z "${NUMBER+x}" ]; then # check if NUMBER exists
belly
else
belly | cat -n
fi
しかし、これはうまくいきません。私は何を見逃していますか?
ベストアンサー1
実際、この質問はここで回答されている可能性があります。条件付きパイプライン
この回答は、シェルif/then/else
メカニズムを使用してロジックを含めるために使用します。~へ管路。演算子を使用してこれを行うこともできますが、明確には&&
読まないので、これを好みますif
。
デフォルトでは、あなたのtail
行は次のようになります(-z
変更も参照してください-n
)。
tail -n +"$HEAD" "$1" |
head -n $((TAIL-HEAD+1)) |
if [ -n "${NUMBER+x}" ]; then cat -n; else cat; fi
(ここにはいくつかのバグがあるかもしれません。私はLinuxシェルプログラミングがあまり好きではありません。しかし、あなたは理解するでしょう。)