선택적 매개변수를 사용하는 방법은 무엇입니까?

선택적 매개변수를 사용하는 방법은 무엇입니까?

저는 이 스크립트를 빠른 초안으로 작성하고 있습니다. 날짜와 시간이 포함된 텍스트 편집기가 열리므로 빠른 저장을 위해 초안 텍스트를 삽입할 수 있습니다.

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

이는 첫 번째 인수가 빈 문자열이 아닌 경우( -ntest가 수행하는 작업) 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

관련 정보