[질문] 스크립트에서 문자열 조작...

익명 사용자의 이미지

kldp에서 문서 읽고 그대로 따라하는데 제가 잘못인지

문서가 잘못인지 잘 안되네요.

#!/bin/sh
p="/usr/X11R6/bin/startx"

a=${#p}
echo $a

a=${p%/*}
echo $a

이건데 스크립트를 실행하면 'bad substitution'이라고 에러가 납니다.

위에 문법이 틀렸나요?

문서에 나온 그대로 했는데...

제 목적은 저장된 문자의 길이나 그 중 어떤 문자만 잘라 내서 사용하고
싶거든요,

스크립트에서 이런걸 해주는 명령어는 없는지 궁금합니다.

읽어 주셔서 감사합니다...

익명 사용자의 이미지

위 예는 bash(ksh,zsh, posix shell(?))에서는 정상적으로 작동할겁니다.

하지만 유닉스 계열이라도 시스템 기본셸인 "/bin/sh"는 천차만별로

달라질수 있습니다...

"/bin/sh"의 버전을 확인해 보세요... 그래도 bourne shell 문법만은

다 통할겁니다...

귀찮으시다면 첫줄을 요로케

#! /bin/sh ==> #! /bin/bash(ksh,zsh,...)

정확한 셸명을 적으셔도 좋습니다...

여담으로 sysv계열은 /bin/sh가 bsd계열은 /bin/csh가 기본셸이지요...