최근에 .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
여기서는 동일한 효과를 얻기 위해 서브셸을 사용합니다.
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"
)
}