
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
)가 포함된 경우 확장을 방지하려면 이 구성을 사용하지 마세요.