예시 1.
콘솔에 추가하면 훌륭하게 작동합니다.
pic@pic:~/Desktop$ a="$(date +%s)"
pic@pic:~/Desktop$ b="$(date +%s)"
pic@pic:~/Desktop$ echo $[a+b]
2844184057
pic@pic:~/Desktop$
예시 2.
다 똑같지만 대본이
pic@pic:~/Desktop$ cat a.sh
#!bin/bash
a="$(date +%s)"
b="$(date +%s)"
echo $[a+b]pic@pic:~/Desktop$ sh a.sh
$[a+b]
pic@pic:~/Desktop$
왜 다른 결과가 나오나요? 어떻게 하면 같은 결과를 얻을 수 있나요?
편집하다:
pic@pic:~/Desktop$ ls -l $(command -v sh)
lrwxrwxrwx 1 root root 4 sty 10 2014 /bin/sh -> dash
pic@pic:~/Desktop$ ./a.sh
bash: ./a.sh: Brak dostępu
pic@pic:~/Desktop$
편집-1:
마치 달리는 것 같아
pic@pic:~/Desktop$ . ./a.sh
2844188704
pic@pic:~/Desktop$
편집-2:
작동하지 않습니다
pic@pic:~/Desktop$ chmod +x a.sh
pic@pic:~/Desktop$ ./a.sh
bash: ./a.sh: bin/bash: zły interpreter: Nie ma takiego pliku ani katalogu
pic@pic:~/Desktop$
편집-3:
수정됨
pic@pic:~/Desktop$ cat a.sh
#!/bin/bash
a="$(date +%s)"
b="$(date +%s)"
echo $[a+b]pic@pic:~/Desktop$ ./a.sh
2844189920
pic@pic:~/Desktop$
답변1
귀하의 스크립트에 올바른 헤더가 누락되었습니다. Shebang 줄은 다음과 같습니다.
#!bin/bash
그래야지
#!/bin/bash
현재 디렉터리의 bin 하위 디렉터리에 bash가 있을 가능성은 거의 없습니다. 따라서 스크립트에서 시스템의 sh(대시?)를 사용합니다.