我最近在 .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"
)
}