가 떠들썩한 파티 스크립트에서 다음?역 따옴표
totaltrackseval=`if [[ $totaltracks -ge 0]]; then; echo '-N $totaltracks'; else; echo 'elsetext'; fi`
그렇다면 유사한 일을 할 수 있는가, 어떻게?
가 떠들썩한 파티 스크립트에서 다음?역 따옴표
totaltrackseval=`if [[ $totaltracks -ge 0]]; then; echo '-N $totaltracks'; else; echo 'elsetext'; fi`
그렇다면 유사한 일을 할 수 있는가, 어떻게?
원하는대로 할 수 있습니다. 당신은 처음에는 거의 성공했습니다. 사실 나는 이중 따옴표 대신에 작은 따옴표를 사용했다. 작은 따옴표 안에서는 변수 대체가 작동하지 않습니다. 또한 테스트를 위해 대괄호를 사용하면 안쪽에 공백이 있어야합니다.
totaltrackseval=`if [ $totaltracks -ge 0 ];
then
echo "-N $totaltracks"
else
echo "elsetext"
fi`
당신은 한 줄 구현을 선호하는 경우 :
totaltrackseval=`if [ $totaltracks -ge 0 ]; then echo "-N $totaltracks"; else echo "elsetext"; fi`
당신은 다음과 같이 그것을 할 수 있습니다 :
totaltrackseval=`bash -c "if [[ $totaltracks -ge 0 ]]; then echo '-N $totaltracks'; else echo 'elsetext'; fi"`
테스트 :
[email protected]:~$ totaltracks=5
[email protected]:~$ totaltrackseval=`bash -c "if [[ $totaltracks -ge 0 ]]; then echo '-N $totaltracks'; else echo 'elsetext'; fi"`
[email protected]:~$ echo $totaltrackseval
-N 5
이것은 작은 따옴표 안에 $ totaltracks와 함께 작동하지 않을 것이다. –
$ totaltracks는 if의 TRUE 부분에 작은 따옴표 안에 들어 있으며 올바르게 실행됩니다. 작동하지 않는 이유를 명확히 할 수 있습니까? 구체적인 예를 들어? – Nelson
작은 따옴표 안에 $ totaltracks 참조가 bash로 실제 값으로 유지되지 않기 때문에. 샘플 스크립트 : –
또 다른 접근 방식을 , 두 가지 유형의 매개 변수 확장을 사용합니다. totaltracks
이 설정되어 있지 않거나 음수가 아닌 정수 값을 가지고 있다고 가정합니다.
# Use an alternate value for totaltracks if it is set
totaltrackseval=${totaltracks:+-N $totaltracks}
# Use a default text if totaltrackseval still has no value
: ${totaltrackseval:=elsetext}
이것은 내 것보다 깨끗한 해결책이며, upvote입니다. – Nelson
감사합니다. 이것은 완벽하게 작동했습니다. 내가 그것을 틱했을 때 나는 반응했을 것이다. 그러나 3am이었고 나는 자고 싶었다. :) –