'expr:语法错误:意外参数' - 来自别名的结果

'expr:语法错误:意外参数' - 来自别名的结果

我最近在 .bash_aliases 文件中添加了一个别名:

alias runhole="perfect && cd data_series_test && doa=$(ls -1 | wc -l) && a=$(expr $doa / 2 ) && perfect && cd data_series_train && dob=$(ls -1 | wc -l) && b=$(expr $dob / 2 ) && perfect && python3 train.py > results_$b'_'$a"

现在,当我打开终端时,错误回显两次:

expr: syntax error: unexpected argument ‘2’
expr: syntax error: unexpected argument ‘2’

我想输出一个名为结果_a_b其中 a 和 b 是在对别名中定义的文件夹中的文件进行计数时定义的值,但命令输出结果__

答案1

别名几乎总是最好写成函数。这里棘手的部分是你将每个命令链接在一起以&&提前中止——我set -e在这里使用子 shell 来达到相同的效果。

runhole() {
    ( # run in a subshell to avoid side-effects in the current shell
        set -e
        perfect
        cd data_series_test
        doa=$( files=(*); echo "${#files[@]}" )
        a=$(( doa / 2 ))
        perfect
        cd data_series_train
        dob=$( files=(*); echo "${#files[@]}" )
        b=$(( dob / 2 ))
        perfect
        python3 train.py > "results_${b}_$a"
    )
}

相关内容