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가 없습니다 $
. 노력하다cat
input_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