![파일의 줄을 사용하여 문자열과 파일 이름 생성](https://linux55.com/image/61492/%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EC%A4%84%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%AC%B8%EC%9E%90%EC%97%B4%EA%B3%BC%20%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%20%EC%83%9D%EC%84%B1.png)
foo.txt
각 줄에 폴더 이름이 있는 파일이 있습니다 .
folder_1
folder_2
folder_3
나는 이런 일을하고 싶다 :
cat foo.txt | xargs -I {} echo 'function {}() { return stuff; }' > {}/function.js
즉, 파일을 한 줄씩 읽은 다음 각 줄을 사용하여 문자열을 만들고 해당 문자열이 저장된 파일의 이름을 만들고 싶습니다.
Bash의 명령줄에서 비슷한 작업을 어떻게 수행할 수 있나요?
답변1
파일의 모든 줄을 반복하면 됩니다.
while read line
do
echo "function $line() { return stuff; }" > "$line/function.js"
done < foo.txt
물론 이는 이미 에 있다고 가정합니다 foo.txt
. 그렇지 않은 경우 먼저 를 사용하여 생성하십시오 mkdir "$line"
.
awk
루프 대신 사용하는 또 다른 방법 은 다음과 같습니다.
awk '{printf("%s\n","function "$0"() { return stuff; }")>$0"/function.js"}' foo.txt
답변2
xargs
+를 사용하여 이 작업을 수행할 수 있습니다 sh -c
.
<file1.txt xargs -d'\n' -L1 sh -c 'mkdir -p -- "$0"
printf %s\\n "function $0() { return stuff; }" >"$0"/function.js'
-I {}
텍스트 파일에 이상한 콘텐츠(예: 와 같은 줄 - $'\n' \ $PATH
)가 포함된 경우 확장을 방지하려면 이 구성을 사용하지 마세요.