이것-
$a=`ls` | do something | etc. | etc. | etc...
echo "$a"
이것을 감안할 때 -
file1
file2
file3
하지만 해당 변수 끝에 뭔가를 추가하고 싶어서 시도해 보았습니다.
a=${a}\nfile4
하지만 이해한다--
file1
file2
file3nfile4 # wrong!
답변1
Bash에서는 변수에 추가를 사용할 수 있습니다 var+=value
. 하지만 문제는 그게 아니라 개행 문자를 생성하는 것입니다. 가장 간단한 방법은 $'..'
백슬래시 이스케이프를 개행 문자로 해석하는 따옴표를 사용하는 것입니다 \n
.
a+=$'\nfile4'
답변2
현재 디렉터리의 파일 목록만 얻으려면 각 이름에 문자열을 추가하세요.
set -- *
printf '%s-somestring\n' "$@"
또는 bash
배열을 사용하여
names=( * )
printf '%s-somestring\n' "${names[@]}"
배열, 위치 인수 배열(위의 첫 번째 예, 모든 POSIX 셸에서 작동) 또는 array 를 사용하는 것이 bash
파일 이름을 처리하는 가장 안전한 방법입니다. 파일 이름을 일종의 구분된 문자열로 변환하는 경우 문자열을 구분하기 위해 선택한 문자가 파일 이름에 포함되어 있으면 문제가 발생합니다.
도착하다출력 끝에 무언가를 추가하십시오., 이건 혼자 하세요 echo
:
# code that output something
# then,
echo 'additional data'
또는 위의 예를 수정하세요.
set -- * 'additional data'
printf '%s\n' "$@"
그리고
names=( * 'additional data' )
printf '%s\n' "${names[@]}"
또는...
set -- *
set -- "$@" 'additional data'
printf '%s\n' "$@"
그리고
names=( * )
names+=( 'additional data' )
printf '%s\n' "${names[@]}"
답변3
에코를 사용해 볼 수 있습니까?
a=$(echo -e "${a}\nfile")