사용자가 생성되는 파일의 이름을 지정한 다음 스크립트 출력을 해당 파일로 리디렉션할 수 있기를 바랍니다. 이 스크립트는 긴 디렉토리 목록을 생성하고 해당 디렉토리에 있는 파일 수를 계산합니다. 이것이 내가 지금까지 가지고 있는 것입니다:
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
셸에서 실행되는 모든 후속 명령의 출력도 해당 파일로 지정됩니다.