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

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"
    )
}

관련 정보