이 명령을 생성하여 변수에 넣고 싶습니다.
sort -k 1,1 | tr " " "\n" | users | wc -l
그러나 아래와 같이 지금까지의 출력에서는 오류가 발생하여 제대로 작동하지 않습니다.
us_num=$(users | tr " " "\n" | sort -k 1,1 | wc -l)
echo "Currently there is $(us_num) number of users on the server."
어떤 아이디어가 있나요?
답변1
$(us_num)
명령을 실행 us_num
하고 명령의 출력으로 대체되는 명령 대체입니다.
삽입할 값바꾸다 us_num
, $us_num
대신 다음을 사용하세요.
printf 'There are currently %d number of users on the server\n' "$us_num"
또한 언급한 첫 번째 파이프라인에는 명령 위치가 잘못되어 있습니다. 이 users
명령은 터미널의 입력을 무시 tr
하고 sort
터미널로부터의 입력을 기다립니다.
wc -w
설명에서 언급했듯이 다음을 사용하여 파이프라인을 단축할 수도 있습니다(단어 수 계산).
printf 'There are currently %d number of users on the server\n' "$(users|wc -w)"