bash에서 대체 값 확장 (${var+alt}
)의 다른 변수 이름으로 한 변수의 값을 사용하는 방법은 무엇입니까?대체 값 확장에서 bash 변수 이름으로 문자열 사용
나는 문제의 일부를 추측
${`echo "${cat}"`+x}: bad substitution
내가
#!/bin/bash
cat='dog'
varname='cat'
if [ -z ${`echo "${varname}"`+x} ]; then
echo 'is null'
fi
이
#!/bin/bash
if [ -z ${dog+x} ]; then
echo 'is null'
fi
거의 비슷해야한다고 생각하지만이 작업을 수행 할 때, 내가 할 명령 대체를 수행하는 서브 쉘이 더 이상 $varname
을 알지 못한다는 것입니까? 해당 변수를 내 보내야합니까?
이 일에 대한 나의 이유는 내가 변수가 null인지 확인하고, 나는이 같은 is_null
라는 함수에서 그 수표를 캡슐화하기 위해 노력하고있어 방법 this answer에서 배운 것입니다 :
function is_null {
if [ $# != 1 ]; then
echo "Error: is_null takes one argument"
exit
fi
# note: ${1+x} will be null if $1 is null, but "x" if $1 is not null
if [ -z ${`echo "${1}"`+x} ]; then
return 0
else
return 1
fi
}
if is_null 'some_flag'; then
echo 'Missing some_flag'
echo $usage
exit
fi
난 당신이 필요하다고 생각이 http://stackoverflow.com/questions/26337826/in-linux-shell-script-how-can-i-recall-value-of-variable/26337979#26337979 –
@ Ashwani 감사합니다, 그건 내가 필요한 것입니다. if 문을 if [-z $ {! 1 + x}]로 변경했습니다. then ... ... ' –