Debian Linux 셸에서 두 개의 개별 명령의 결과를 추가하여 두 명령의 합을 알 수 있었습니다.
난 노력 했어:
echo $(expr $(du -sh /srv/mysql) + $(du -sh /srv/www))
그리고 그 변종.
다음을 반환합니다: expr:
"구문 오류: 예기치 않은 매개변수 '/srv/mysql'
"
물론 폴더 등에 대해서도 설명하려고 노력합니다.
답변1
이와 같이:
모든 쉘(bash, zsh, sh, dash...)과 함께 사용할 수 있습니다.
echo "$((
(
$(du -s /srv/mysql | awk '{print $1}') +
$(du -s /srv/www | awk '{print $1}')
) / 1024
))MiB"
또는 간단하게:
du -shc /srv/www /srv/mysql | awk 'END{print $1}'
-c
운영자 로서count
답변2
정수를 다루고 있다고 가정하면 ...
나는 이것이 expr
구식이고 구식이라고 간주된다는 것을 알았습니다. 여기에는 산술 일치와 정규식 일치라는 두 가지 주요 용도가 있으며 둘 다 대부분의 셸에서 사용할 수 있습니다.
(그런데, "Debian Linux 쉘"은 단지 하나의 것이 아닙니다. Bash나 Dash 또는 나중에 사용자를 추가하거나 변경할 때 실제로 선택한 쉘이 될 수 있습니다.)
산술의 경우 POSIX에서는 /bin/sh
$((표현하다)) $((1+2*3))
따라서 C의 정수 표현식에 대한 유사한 규칙에 따라 7이 제공되어야 합니다.
원래 질문의 주요 문제점은 출력에 숫자 외에 다른 정보가 포함되어 있다는 것입니다. 가장 먼저 시도해야 할 것은 이러한 숫자를 생성하는 프로그램에 다른 어떤 것도 출력하지 않도록 요청하는 것입니다. 출력은 실패 시에만 필터링됩니다. 이를 수행하는 방법에는 여러 가지가 있지만 가장 간단한 방법은
tr -dc 0-9
숫자가 아닌 것은 모두 제거됩니다.
소수가 필요하다면...
(소수 분수는 일반적으로 1.23과 같은 고정 소수점 숫자이지만 부동 소수점 시스템도 고정 소수점 숫자를 이해하므로 둘 중 하나를 사용할 수 있습니다.)
또한 소수점 이하 자릿수도 처리 expr
할 수 없습니다 $((…))
. 이를 위해서는 또는 와 같은 bc
고정 소수점 또는 부동 소수점이 내장된 별도의 스크립트 언어가 필요하거나 이를 사용해야 합니다 .awk
perl
python