사용자에게 입력을 요청하고 $ 1, $ 2 등과 같은 변수에 입력을 받고 있습니다. 변수에서 null 값을 확인하고 있으며 null 인 경우 값을 바꾸고 싶습니다.
if [ "$2" == "" ]; then
2=value
fi
그러나 내가 놓친 것. 어떤 제안?
이와 같은 위치 매개 변수에 값을 직접 설정할 수 없습니다.
당신은 할 수 로 설정 set
명령하지만,이 설정됩니다 모든 값을 ( $1
, $2
, ...)
예 :
$ set -- first second third fourth fifth
$ echo $1
first
$ echo $2
second
이제 $2
빈 문자열이 될 수있는 두 가지 경우가 있습니다. 제 경우에는 값이 경과되지 않았거나 제 경우 ""
실제 인수로 전달되고, 그래서 여전히 존재할 수있다 $3
, $4
등등
각각의 경우를 약간 복잡한 방식으로 처리 할 수 있습니다.
#!/bin/bash
echo Before 1=$1 2=$2 3=$3 4=$4
if [ -z "$2" ]
then
first=$1
shift 2
set -- "$first" value "$@"
fi
echo After 1=$1 2=$2 3=$3 4=$4
if
테스트 내부의 비트 는 다른 모든 값이 유지되도록합니다.
예 :
% ./testing arg1 "" "arg 3" "and arg 4"
Before 1=arg1 2= 3=arg 3 4=and arg 4
After 1=arg1 2=value 3=arg 3 4=and arg 4
그러나 당신은 일을 더 간단하게 할 수 있고 설정되지 않은 경우 로 ${2:-value}
평가되는 것을 사용할 수 있으므로 인수를 다시 작성하는 것에 대해 걱정할 필요가 없습니다.value
$2
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다