Shell-Script

如何附加命令

  • October 3, 2019

我不記得如何將命令附加到 shell 腳本。我搜尋了appendaddconcat等,但沒有成功。

基本上我有

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

它工作正常,但我不喜歡重複的邏輯。我知道我可以使用函式或 eval,但有沒有更簡單的方法來做到這一點?在我的腦海中,我有這樣的事情:

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

但它不起作用。我錯過了什麼?

實際上,這可能已經在這裡得到了回答:條件管道

該答案採用外殼if/then/else機制並使用它將邏輯嵌入管道中。你也可以用&&操作符來做到這一點,但它讀起來不太乾淨,所以我更喜歡if.

基本上在你的情況下,這tail條線是這樣的(請注意-zto的變化-n):

tail -n +"$HEAD" "$1" |
head -n $((TAIL-HEAD+1)) |
if [ -n "${NUMBER+x}" ]; then cat -n; else cat; fi

(這可能有一些錯誤,我不太熱衷於 Linux shell 程式。但你明白了。)

引用自:https://unix.stackexchange.com/questions/353922