相关疑难解决方法(0)

在 Bash 中动态构建命令管道

我正在编写一个带有选项的 bash 程序。

例如 :./my_program -l 3 -a -s

  • -l 3将输出限制为三行
  • -a将选择我的所有文件
  • -s将对输出进行排序

现在,我可以这样一次使用两个选项:

if [ $all == 1 ]
then
    if [ $sort == 1 ]
    then
        printf '%s\n' "${haikus[@]}" | sed -e 's/^[ \t]*//' | sort
    else
        printf '%s\n' "${haikus[@]}" | sed -e 's/^[ \t]*//'
    fi
fi
Run Code Online (Sandbox Code Playgroud)

如果-a选项,我打印整个文件,或者,如果-a选项和-s选项,我使用相同的命令,但我使用sort.

通过这个解决方案,如果我想实现-l,它将创建很多“if”语句。

我首先想到创建一个包含我的命令的变量。

例子:

sort='sort'
limit='grep -m3'
Run Code Online (Sandbox Code Playgroud)

然后这样写我的命令:

printf '%s\n' "${haikus[@]}" | sed -e 's/^[ \t]*//' | …
Run Code Online (Sandbox Code Playgroud)

variables bash command

5
推荐指数
1
解决办法
1216
查看次数

标签 统计

bash ×1

command ×1

variables ×1