변수에 별표 사용

변수에 별표 사용

bash 스크립트의 모든 파일을 새 파일에 넣고 싶습니다.

예를 들어, 내 디렉토리에는 세 개의 파일이 있습니다: - file_a.txt - 파일 b.txt - file(c).txt

다음과 같이 작성하면 잘 작동합니다.

cat "file"*".txt" >> out_file.bak

아니요, 변수를 사용하여 더 유연하고 깔끔하게 만들고 싶습니다.

input_files="file"*".txt"
cat $input_files >> out_file.bak

불행히도 이것은 작동하지 않습니다. 문제는 왜인가? (input_files를 echo하고 터미널에서 명령을 실행하면 모든 것이 정상입니다. 그렇다면 왜 bash 스크립트에서는 작동하지 않습니까?)

답변1

사용 중인 명령에 A가 없습니다 $. 노력하다catinput_files

cat $input_files >> out_file.bak

답변2

확장하려는 시기에 따라 다릅니다.

변수를 정의할 때:

$ files=$(echo a*)
$ echo $files
a1 a2 a3
$ echo "$files"
a1 a2 a3

변수에 접근할 때:

$ files=a*
$ echo "$files"
a*
$ echo $files
a1 a2 a3

답변3

파일 이름에 공백이 포함되어 있으면 더욱 주의해야 합니다. 이 경우 배열을 사용하십시오.

input_files=( "file with space."*.txt )
cat "${input_files[@]}" >> out_file.bak

관련 정보