Bash 명령 셸용으로 작성된 스크립트에 대한 질문 오류 / 구문 오류가있는 셸 스크립트의 경우 여기를 게시하기 전에 shellcheck 프로그램 (또는 https://shellcheck.net의 웹 셸 검사 서버)에서 확인하십시오. Bash의 대화식 사용에 대한 질문은 스택 오버플로보다 수퍼 유저에 대한 주제 일 가능성이 높습니다.
다음은 더 큰 스크립트의 쉘 스크립트 스 니펫입니다. 변수가 보유한 문자열에서 따옴표를 제거합니다. sed를 사용하여하고 있지만 효율적입니까? 그렇지 않다면 효율적인 방법은 무엇입니까? #!/bin/sh opt="\"html\\test\\\"" temp=`echo $opt | sed 's/.\(.*\)/\1/' | sed 's/\(.*\)./\1/'` echo $temp
나는 이것의 문제점을 알아 내려고 노력했지만 그것을 이해할 수는 없다. 이 부분은 오류가 발생하는 것 같습니다. elif [ $operation = "man" ]; then if [ $aug1 = "add" ]; then # <- Line 75 echo "Man Page for: add" echo "" echo "Syntax: add [number 1] [number 2]" echo "" …
각 두 단어 사이에 하나 이상의 공백이있는 많은 단어가 포함 된 문자열이 있습니다. 문자열을 개별 단어로 분리하여 반복 할 수 있습니까? 문자열은 인수로 전달됩니다. 예 ${2} == "cat cat file". 어떻게 반복 할 수 있습니까? 또한 문자열에 공백이 있는지 어떻게 확인할 수 있습니까?
쉘 프롬프트 (특히 'SKULL AND CROSSBONES'(U + 2620))에 유니 코드 스컬과 크로스 본을 추가하고 싶지만, 에코 침을 뱉어내는 마법의 마법을 알아낼 수는 없습니다. 4 자리 유니 코드 문자 두 자리 숫자는 쉽습니다. 예를 들어 echo -e "\ x55",입니다. 아래의 답변 외에도 터미널은 출력이 예상 한대로 유니 코드를 지원해야한다는 점에 유의해야합니다. …
나는 하나의 파일의 존재를 확인하려는 경우, 나는 그것을 사용하기 위해 테스트 할 수 있습니다 test -e filename또는 [ -e filename ]. 글로브가 있고 글로브와 이름이 일치하는 파일이 있는지 알고 싶습니다. glob은 0 개의 파일과 일치하거나 (이 경우 아무 것도 할 필요가 없음) 1 개 이상의 파일과 일치 할 수 있습니다 …
나는 우분투 시스템에서 일하고 있으며 현재 이것은 내가하고있는 일입니다. if ! which command > /dev/null; then echo -e "Command not found! Install? (y/n) \c" read if "$REPLY" = "y"; then sudo apt-get install command fi fi 이것이 대부분의 사람들이하는 일입니까? 아니면 더 우아한 해결책이 있습니까?
별명을 입력하여 모든 별명 목록을 표시 할 수 있습니다. 그러나 기능을 위해 내가 할 수있는 일은 grep my .bash_profile입니다. 그것은 보조 파일에 정의되거나 동적으로 정의 된 파일이 아닌 해당 파일의 파일 만 가져옵니다. 현재 정의 된 기능을 찾는 더 편리한 방법이 있습니까?
x=$(find . -name "*.txt") echo $x Bash 쉘에서 위의 코드를 실행하면 목록이 아닌 공백으로 구분 된 여러 파일 이름이 포함 된 문자열이 나타납니다. 물론 목록을 얻기 위해 공백으로 더 분리 할 수는 있지만 더 좋은 방법이 있다고 확신합니다. 그렇다면 find명령 결과를 반복하는 가장 좋은 방법은 무엇 입니까?
나는 쉘 스크립팅의 멍청한 놈입니다. 명령이 실패하면 메시지를 인쇄하고 스크립트를 종료하고 싶습니다. 난 노력 했어: my_command && (echo 'my_command failed; exit) 그러나 작동하지 않습니다. 스크립트에서이 줄 다음에 나오는 지침을 계속 실행합니다. 우분투와 bash를 사용하고 있습니다.
Anaconda를 설치하고 Python을 실행할 수 있으므로 올바르게 설치했다고 가정합니다. 이 소개 문서에 따라 Python v3.3을 설치하려고하므로 다음 행을 복사하여 콘솔에 붙여 넣습니다. conda create -n py33 python=3.3 anaconda 그러나 그것은 나에게 오류를 준다 : -bash : conda : 명령을 찾을 수 없습니다 Conda를 실행하려면 어떻게해야합니까? 저는 Linux 시스템에서 일하고 있습니다.
두 디렉토리 사이의 파일 수를 빼기 위해 아래 스크립트가 있지만 COUNT=표현식이 작동하지 않습니다. 올바른 구문은 무엇입니까? #!/usr/bin/env bash FIRSTV=`ls -1 | wc -l` cd .. SECONDV=`ls -1 | wc -l` COUNT=expr $FIRSTV-$SECONDV ## -> gives 'command not found' error echo $COUNT
절대 또는 상대 경로 (유닉스 계열 시스템에서)가 주어지면 중간 심볼릭 링크를 해결 한 후 대상의 전체 경로를 결정하고 싶습니다. ~ 사용자 이름 표기법을 동시에 해결하기위한 보너스 포인트. 대상이 디렉토리 인 경우 디렉토리에 chdir () 한 다음 getcwd ()를 호출 할 수 있지만 C 도우미를 작성하는 대신 쉘 스크립트 에서이 작업을 …