명령은 ...
t=20
s=$t+30
내가 원하는 출력은 이지만 echo $s
추가 를 수행하도록 명령을 50
작성하는 방법을 모르겠습니다 .s=
답변1
기본적으로 셸 변수는 문자열입니다. 일부 쉘은 다른 변수 유형을 지원하지만 쉘에 이를 알려야 합니다.
모든 POSIX 스타일 셸( sh
고대 Unix 시스템, dash, bash, ksh, zsh 등 제외)에서 다음을 사용할 수 있습니다.산술 확장변수 할당을 구문 분석할 때 산술 연산을 수행하도록 쉘에 지시합니다.
t=20
s=$((t+30))
echo "$s"
(여기서는 큰따옴표가 필요하지 않지만,이것은 발전시킬 가치가 있는 좋은 습관이다.)
평가할 표현식의 텍스트를 저장하고 인쇄 시 산술 연산을 수행할 수도 있습니다.
t=20
s=$((t+30))
echo "expression: $s; evaluated: $(($s))"
그러나 산술 표현식에서 명시적 변수 대체를 사용할 때는 주의하십시오. 산술 하위 표현식이 아닌 리터럴로 대체되므로 연산자 우선순위가 이상하게 보일 수 있습니다.
echo "$(($s*2))" # equivalent to $((t+30*2)), so prints 80, not 100
Bash, ksh 또는 zsh에서는 사용할 수 있습니다let
또는((…))
산술 연산을 수행합니다.
t=20
let s=t+30
echo "$s"
또는
((t = 20))
((s = t + 30))
echo "$s"
또는 그 변형.
bash, ksh 또는 zsh의 또 다른 가능성은 다음을 사용하는 것입니다.typeset
변수를 정수로 선언하는 기능이 내장되어 있습니다. 그런 다음 각 할당에 대해 산술 평가가 수행됩니다.
typeset -i s t
t=20
s=t+30
echo "$s"
답변2
한 가지 방법은 다음과 같습니다.
t=20
s=$((t+30)) # or s="$((t+30))"
echo "$s"
답변3
expr
다음과 같은 명령을 사용하여 산술 연산을 수행할 수 있습니다 .
t=20
s=$(expr "$t" + 30)
echo "$s"
자세한 내용을 보려면 터미널에 입력하세요 man expr
.