2014-11-24 12 views
0

명령 줄 인수를 통해 셸 스크립트에 셸 변수를 전달하려고 시도했습니다.셸 변수를 셸 스크립트의 인수로 전달하는 방법

다음은 쉘 스크립트 내에 작성된 명령입니다.

LOG_DIRECTORY="${prodName}_${users}users" 
mkdir -m 777 "${LOG_DIRECTORY}" 

이 같이 실행하려고 해요 :

prodName='DD' users=50 ./StatCollection_DBServer.sh 

명령은 잘 작동하고 내 요구 사항에 따라 디렉토리를 생성. 그러나 문제는 아래에 언급 된 쉘 스크립트를 실행하고 싶지 않다는 것입니다.

대신에, 나는 단지와 "DD_50users로 될 것입니다 생성 될 디렉토리 여기에서 값을 얻어야한다

처럼 DD 50 ./StatCollection_DBServer.sh

그리고 스크립트 변수를 실행하려면 ".

방법에 대한 도움이 필요하십니까?

미리 감사드립니다.

스크립트 내부
./StatCollection_DBServer.sh DD 50 

, 당신은 $ 1, $ 2 그래서 스크립트가 수와 변수에 액세스 할 수 있습니다

+0

원하는 방식으로 수행 할 수 없습니다. 배시는 그렇게하지 않습니다. Bash는 첫 번째 단어 'DD'를 살펴보고 그 단어가 명령이고 그 이후의 모든 단어가 DD의 인수라고 생각합니다. Ansurul의 제안을 따르거나, DD를 쉘 스크립트처럼 만드는 재미있는 일을해야합니다. – Bitdiot

답변

1

배쉬 스크립트는이 같은 스크립트를 호출 할 필요가 그렇게하지 전에 스크립트의 호출 후에 인수를 난이 도움이되기를 바랍니다

#!/bin/bash 
LOG_DIRECTORY="${1}_${2}users" 
mkdir -m 777 "${LOG_DIRECTORY}" 

...

+0

고마워요 @ 숀, 당신의 제안이 효과가있었습니다. – user3627319

+1

질문에 대한 답변이 정확한 경우 동의하십시오. 감사! – Thawn

+0

예 @ Thawn, 제안을 구현했습니다. 이제 제대로 작동합니다. 고맙습니다. :-) – user3627319

1
#!/bin/sh  
prodName=$1 
users=$2 
LOG_DIRECTORY="${prodName}_${users}users" 
echo $LOG_DIRECTORY 
mkdir -m 777 "$LOG_DIRECTORY" 

및 리터를 호출 : 다음과 같이 이케이 :

chmod +x script.sh 
./script.sh DD 50 
+0

나는 위의 코드를 시도하고 그것은 단지 잘 작동 – Hasan

+0

감사합니다 @ user2618277. 당신의 제안이 효과가있었습니다. – user3627319

2

간단한과 같이 호출 : sh script.sh DD 50

이 스크립트는 읽을 명령 줄 인수 : 여기

prodName=$1 
users=$2 
LOG_DIRECTORY="${prodName}_${users}users" 
mkdir -m 777 "$LOG_DIRECTORY" 

$1는 첫 번째 인수를 포함하고 $2 두 번째를 포함합니다 논의.

관련 문제