실행된 명령이 성공했는지 여부를 확인해야 합니다. test.sh에 다음 코드를 넣어 실행했는데 내용이 나열되지만 /home
경고가 표시 됩니다.
./test.sh: 3: ./test.sh: [[: not found
다음 명령의 문제점
#!/bin/sh
ls /home/
if [[ "$?" != 0 ]]; then
echo "Commnad Error"
else
echo "Commnad Success"
fi
답변1
오류에 따르면:
./test.sh: 3: ./test.sh: [[: not found
귀하의 것은 bash와 관련이 /bin/sh
없습니다 . 단일 대괄호를 사용 하거나 명령만 사용하십시오. 숫자 조건 에도 사용할 수 있습니다 . 특정 사례에는 효과가 있지만 이는 나쁜 습관입니다.bash
[[
[
test
-ne
!=
답변2
오류가 발견되었습니다if [[ "$?" != 0 ]]; then
수치 비교는 사용되는 것이 아니라 !=
사용 -ne
되어야 합니다.
또한 마지막으로 실행된 명령의 종료 코드 상태에 대한 올바른 구문은 $?
따옴표가 없습니다.
if [[ $? -ne 0 ]]; then
답변3
나는 당신이 그런 경고를 사용할 수 있기 때문에 dash
스크립트를 실행하는 데 사용하고 있다고 생각합니다./bin/sh
link
bash
#!/bin/bash
답변4
대시는 없고 [[
오직 [
. 하지만 있다 하더라도 선택할 [
이유가 있습니다 . (전자는 더 직접적이고 빠르며 패턴의 결함에 적응할 수 있습니다).if your_command
your_command; if [ $? = 0 ]
set -e