$ORACLE_HOME 변수의 경로에서 처음 2개의 디렉토리를 추출해야 합니다.
ORACLE_HOME=/oradba/app/oracle/product/11.2.0.4/testdb
나에게 필요한 가치:/oradba/app/
답변1
잘라내기 사용(끝에 추가
/
):ORACLE_HOME=$(printf "%s" "$ORACLE_HOME" | cut -d/ -f1-3)/
인수를 사용하여 두 번 확장합니다. 첫 번째는 디렉터리의 처음 두 요소를 제거한 다음 두 번째는 원래 변수의 나머지 요소를 제거합니다.
suffix=${ORACLE_HOME#/*/*/} ORACLE_HOME=${ORACLE_HOME%"$suffix"}
답변2
두 가지 옵션. 후자는 더 복잡하지만 변수에 디렉터리가 몇 개 있는지 알 필요가 없으므로 더 안전합니다.
$ echo ${ORACLE_HOME%/*/*/*/*}/
/oradba/app/
$ echo $ORACLE_HOME | awk -F/ 'BEGIN {OFS="/"} {print $1,$2,$3,""}'
/oradba/app/
답변3
노력하다:
echo $ORACLE_HOME | cut -d/ -f-3
예를 들어:
$ ORACLE_HOME=/oradba/app/oracle/product/11.2.0.4/testdb
$ echo $ORACLE_HOME | cut -d/ -f-3
/oradba/app
$