스크립트 출력을 파일로 리디렉션하시겠습니까? [폐쇄]

스크립트 출력을 파일로 리디렉션하시겠습니까? [폐쇄]

사용자가 생성되는 파일의 이름을 지정한 다음 스크립트 출력을 해당 파일로 리디렉션할 수 있기를 바랍니다. 이 스크립트는 긴 디렉토리 목록을 생성하고 해당 디렉토리에 있는 파일 수를 계산합니다. 이것이 내가 지금까지 가지고 있는 것입니다:

echo -n "Please enter the name of a file to be created: "

read FILENAME

touch FILENAME

ls -l exampledir

echo

ls -l exampledir | wc -l

읽기를 올바르게 사용하지 않았을 수도 있습니다. 확실하지 않습니다.

편집하다

나는 대부분의 내용을 알아냈습니다. 여기에 새로운 코드가 있습니다.

echo -n "Please enter the name of a file to be created: "

read FILENAME

ls -l Assign_7 > FILENAME

echo >> FILENAME

ls -l Assign_7 | wc -l >> FILENAME

내가 이해하지 못하는 유일한 것은 사용자가 입력한 이름으로 파일 이름을 지정하는 방법입니다. 올바른 내용이 들어 있지만 이제 파일 이름은 항상 FILENAME입니다.

두 번째 편집

알아냈어요. 각 파일 이름 앞에 $를 추가하세요.

답변1

매우 간단합니다:

#/bin/bash
echo -n "Please enter the name of a file to be created: "

read FILENAME

ls -l Assign_7 > $FILENAME
echo >> $FILENAME
ls -l Assign_7 | wc -l >> $FILENAME

이를 이라고 합니다 Parameter Expansion. man bash자세한 설명은 참조하세요.

또한 스크립트를 약간 단순화하고 bash출력 파일을 한 번만 열도록 하는 더 짧은 형식이 있습니다.

#/bin/bash
echo -n "Please enter the name of a file to be created: "

read FILENAME

exec > $FILENAME
ls -l Assign_7
echo ""
ls -l Assign_7 | wc -l

후자 형식은 명령을 실행하여 현재 셸을 stdout파일로 리디렉션하므로 exec > $FILENAME셸에서 실행되는 모든 후속 명령의 출력도 해당 파일로 지정됩니다.

관련 정보