아래 명령, 특히 굵은 글씨 부분을 이해하려고 노력 중입니다.
두 번째 줄이 무엇인지 이해합니다. 파일이 존재하는지 테스트하고 존재하지 않으면 파일을 생성하지만 무엇입니까?$_1/
의미는?
test "$1" = "0" && exit
test -f $_1/samplefile || touch $_1/samplefile
답변1
$_1
'확장변수'를 의미합니다 _1
. 이 변수는 설정되지 않았으므로 비어 있는 상태로 확장됩니다. 누군가 실수를 했을 수도 있습니다.
인간의 생각은 다음 $_1
과 같을 수 있습니다 .${_}1
$_
이전 명령의 마지막 매개변수입니다.), 번호에 연결됩니다 1
. 그러나 아래와 같이 동일하지 않습니다.
$ cat tst.bash
#!/bin/bash
test "$1" = "0" && exit
echo $_
test "$1" = "0" && exit
echo $_1
test "$1" = "0" && exit
echo ${_}1
$ ./tst.bash
0
01
스크립트에 인수로 숫자 0 이외의 다른 항목을 제공하면(위 예에서는 인수를 전혀 제공하지 않음) 실패 test
하고 exit
실행되지 않습니다. 따라서 각 에 대해 echo
마지막으로 실행된 명령은 다음과 같습니다.
test "$1" = "0"
, 마지막 매개변수는 입니다 0
. 따라서 $_
로 확장되고 0
, ${_}1
로 확장되고 01
, $_1
빈 문자열로 확장됩니다.
답변2
감사합니다. 이 글을 쓴 사람이 실수를 했을 수도 있다고 생각합니다. 파일이 존재하는지 확인하고, 없으면 생성하는 것이 좋습니다. 그래서 몇 번 시도해 본 후 사용했는데 test -f $(pwd)”/samplefile” || touch samplefile
효과가 있었습니다. $_1/
이것이 무엇을 의미할지 에 관해 모든 명령이 나에게 새롭기 때문에 나는 단지 혼란스럽습니다 . 매우 감사합니다! :-)