저는 이 스크립트를 빠른 초안으로 작성하고 있습니다. 날짜와 시간이 포함된 텍스트 편집기가 열리므로 빠른 저장을 위해 초안 텍스트를 삽입할 수 있습니다.
1.먼저, now 처럼 파일 끝이 아닌 시작 부분에 날짜와 시간을 추가하고 싶습니다 >> $file
. 하지만 그게 쉽지 않은 일이라 최우선 순위는 아닌 것 같아요.
2.매개변수를 정의했습니다 $1
. 삽입할 단어가 몇 개밖에 없다면 draft "foo foo"
편집기를 열고 몇 단어만 쓰는 것보다 실행하는 것이 더 낫다고 생각합니다.
글쎄요, 작동하지만 매개변수에 따르면 마지막 줄은 필요하지 않습니다. 그래서 조건부 행으로 만들고 싶습니다. 매개변수를 전달하지 않으면 편집기가 열리지 않습니다.
내 스크립트를 개선하는 데 도움이 되었나요?
#!/bin/bash
file=rascunho
folder=/home/$USER/
#linha=$(wc -l < $file)
content=$1
#rm $folder$file
printf "\n\n" >> $file
#echo " " >> $file
echo "------< $(date "+%b %d, %Y - %H:%M:%S") >------" >> $file
echo "$1" >> $file
exec leafpad $file
답변1
를 이용하여 확인할 수 있습니다 if
. 예를 들어 위 스크립트의 마지막 두 줄 대신 다음과 같이 할 수 있습니다.
if [ -n "$1" ]; then
echo "$1" >> $file
else
exec leafpad $file
fi
이는 첫 번째 인수가 빈 문자열이 아닌 경우( -n
test가 수행하는 작업) run 을 실행하고 echo
그렇지 않으면 run 을 의미합니다 leafpad
.
여기에서 자세한 내용을 읽을 수 있습니다.
답변2
보다 일반적으로 사용하려면 "$@"
--이를 사용하면 "$1"
다음을 작성할 수 있습니다.
draft use many words without quoting.
#!/bin/bash
file=rascunho
printf "\n\n------< %s >------\n" "$(date "+%b %d, %Y - %T")" >> $file
# if any arguments were given, write them to the file, else edit the file
if [[ $# -gt 0 ]]; then
echo "$@" >> $file
else
exec leafpad $file
fi
파일 시작 부분에 줄을 쓰려면 그룹화 구조를 사용할 수 있습니다.
{ echo "first line"; cat $file; } > temp && mv temp $file