예시 추가

예시 추가

예시 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(대시?)를 사용합니다.

관련 정보