대신 IFS=",";echo {1..5}
출력하려면 어떻게 해야 합니까 ? bash echo {1..5}를 만들고 쉼표로 값을 출력하려면 어떻게 해야 합니까?1,2,3,4,5
1 2 3 4 5
답변1
Bash의 내장 기능을 사용하세요:
5
후행 쉼표를 피하기 위해 구분해야 하기 때문에 이는 약간 보기 흉합니다 .
$ printf '%s,' {1..4}; echo 5
1,2,3,4,5
이후 printf
변수에 직접 출력할 수 있지만 매개변수 확장을 통해 이 문제를 해결하고 마지막 쉼표를 제거할 수 있습니다.
$ printf -v tmpvar "%s," {1..5}; echo "${tmpvar%,}"
1,2,3,4,5
또는 "$*"
첫 번째 문자를 사용하여 연결하는 with 입니다 IFS
. 이는 전역 상태를 파괴하지만 서브셸이나 함수에서 실행하면 이를 쉽게 피할 수 있습니다 local IFS
.
$ IFS=,; set -- {1..5}; echo "$*";
1,2,3,4,5
제한이 변수에 있는 경우 가장 쉬운 방법은 루프를 사용하여 수동으로 수행하는 것입니다. 중괄호 확장 범위에서는 변수를 끝점으로 사용할 수 없기 때문입니다. 다시 말하지만, 상한은 특별한 경우입니다.
a=1; b=5
for (( i=a ; i<b ; i++ )); do
printf "$i,";
done;
printf "$b\n"
답변2
다음을 사용해 보세요:
seq --separator="," 1 5
답변3
숫자 중괄호 확장을 사용하고 있으므로 발생하는 유일한 공백은 숫자 사이의 공백이므로 결과를 후처리할 수 있습니다.
output=$(echo {1..5} | tr ' ' ',')
또는
output=$(echo {1..5} | sed 's/ /,/g')
답변4
공백과 쉼표를 허용하는 경우 다음을 시도하십시오.
$ echo {1..5},
1, 2, 3, 4, 5,