在 Bash 的别名中插入用户定义的变量

ccc*_*nrc 7 bash alias variable

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

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

但是我想nrow在从终端启动命令时指定变量。举个例子:

take_row 1 --> 脚本取第一行

take_row 20 --> 脚本取第 20 行

如何在命令中写入诸如<command> | <read nrow user input>等之类的内容?

fil*_*den 13

使用函数而不是别名,在这种情况下,您可以引用位置参数,例如$1等。

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

在这种特殊情况下,您还可以解决cat无用使用问题

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

...并通过删除不需要的代码使其更短:

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

  • @jrw32982 如果您认为人们应该听取您的建议,那么解释原因会有所帮助。 (2认同)