로그 파일에 stdout 및 stderr의 리디렉션을 사용하는 유닉스 쉘 스크립트가 있습니다. 예를 test.sh
를 들어 :sudo로 실행되는 리눅스 쉘 스크립트에서 리디렉션 사용
sudo ./test.sh
&
은 다음과 같이 해석된다 "백그라운드에서 실행"
ls -l &>> test.log
내 문제는 내가 sudo
으로 스크립트를 실행할 때이다.
제안 사항?
로그 파일에 stdout 및 stderr의 리디렉션을 사용하는 유닉스 쉘 스크립트가 있습니다. 예를 test.sh
를 들어 :sudo로 실행되는 리눅스 쉘 스크립트에서 리디렉션 사용
sudo ./test.sh
&
은 다음과 같이 해석된다 "백그라운드에서 실행"
ls -l &>> test.log
내 문제는 내가 sudo
으로 스크립트를 실행할 때이다.
제안 사항?
그것을 발견 한 스크립트 test.sh
이 같은 첫 번째 줄에있는 오두막이없는 것을 : 여러 환경 설정 방식에 영향이 줄없이
#!/bin/bash
을 스크립트가 실행됩니다 . 귀하의 경우 이것은 ash
, ksh
, dash
또는 루트 사용자의 설정으로 인해 스크립트를 실행하는 데 사용되는 것과 같은 다른 쉘을 의미합니다.
test.sh의 해시 뱅 라인은 무엇입니까? 해당 구문을 지원하는 셸을 지정해야합니다. 어느 쪽도 아니 쉬, 배쉬, KSH,도 CSH가 &>>
리디렉션 연산자가 없다 - - 사실 내가 무엇 쉘 모르겠어요하지만 무엇이든 당신이 명시 적으로 지정해야합니다 :
#!/bin/fancysh
, 더 이식 가능한 구문을 사용하십시오.
#!/bin/sh
ls -l >> test.log 2>&1
는 다음과 같이 실행 해보십시오나요 : 문제는 스크립트가 당면한 라인을 가지고 있지 않은 것이 었습니다
ls -l >> test.log 2>&1
이
ls -l >>& test.log
실행하면 구문 오류가 반환됩니다. –
로 재 지정의 순서를 변경하십시오
#!/bin/bash
LD는 ... 제 생각 엔
왜 &가 필요합니까? – hovanessyan
stdout과 stderr를 모두 재지향 –
문제는 '&'가 비동기 적으로 명령을 실행하고 있지만 다른 사람이 기대하는 것이 아니라는 점입니다! 'bash'는'csh'에서'&>'에 대한 문법을 빌 렸습니다. 그러나 bourne 쉘 구문은'&'를'&'명령 종료 자와 0 명령 재 지정으로 명확하게 처리합니다. 백그라운드에서 명령을 실행하지 않는 쉘은 표준을 따르지 않습니다. –