Bash

在 Bash 的別名中插入使用者定義的變數

  • August 11, 2020

我想為.bashrc文件中的命令添加別名,如下例所示:

alias take_row="cat prova.csv_001.txt | awk -v nrow="${nrow}" '{if (NR==nrow) print}'"

但是我想nrow在從終端啟動命令時指定變數。舉個例子:

take_row 1–> 腳本取第一行

take_row 20–> 腳本佔據第 20 行

我如何在命令中寫一些類似的東西<command> | <read nrow user input>

使用函式而不是別名,在這種情況下,您可以引用位置參數,例如$1等。

take_row () {
   local nrow="$1"
   cat prova.csv_001.txt | awk -v nrow="${nrow}" '{if (NR==nrow) print}'
}

在這種特殊情況下,您還可以解決cat 的無用使用問題

take_row () {
   local nrow=$1
   awk -v nrow="${nrow}" '{if (NR==nrow) print}' prova.csv_001.txt
}

…並通過刪除不需要的程式碼使其更短:

take_row () {
   local nrow=$1
   awk -v nrow="${nrow}" 'NR==nrow' prova.csv_001.txt
}

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