이것은 내 명령입니다:
mail_recipient_location="$PWD/mail_config/myFile.txt"
textVariable= [ -f "$mail_recipient_location" ] && `cat "$mail_recipient_location"`
내 터미널에 cat
반환이 표시됩니다.
{the mail's adress's value in myFile.text}: command not found
cat
파일 텍스트 값을 textVariable에 어떻게 삽입할 수 있나요 ?
답변1
set -x
스크립트를 사용하거나 디버그하면 다음과 같이 bash -x
인쇄됩니다.
+ mail_recipient_location=/somepath/mail_config/myFile.txt
+ textVariable=
+ '[' -f /somepath/mail_config/myFile.txt ']'
++ cat /somepath/mail_config/myFile.txt
+ the mail's adress's value
평가 후
[ -f "$mail_recipient_location" ]
Quasimodo가 이미 언급했듯이 이는 귀하를 확장 cat "$mail_recipient_location"
하고 무시합니다. 따라서 실행하려는 명령이 아닌 textVariable=
것 같습니다 .the mail's adress's value
원하는 것을 달성하려면 다음을 사용할 수 있습니다. (또한 다음을 피해야 합니다.우루무치대학교):
# oneliner
[ -f "$mail_recipient_location" ] && textVar=$(<"$mail_recipient_location")
# or
if [ -f "$mail_recipient_location" ]; then
textVar=$(<"$mail_recipient_location")
else
: # do something
fi
비 POSIX, 다음에 적용 가능 bash
및zsh
답변2
오류는 다음 줄에 있습니다.
textVariable= [ -f "$mail_recipient_location" ] && `cat "$mail_recipient_location"`
cat "$mail_recipient_location"
이메일 주소인 백틱 평가의 출력입니다 . 이것은 분명히 당신이 원하는 것이 아닙니다. 백틱을 제거하세요. 백틱만 제거해도 등호 뒤에 공백이 있기 때문에 코드가 여전히 작동하지 않습니다. 이는 textVariable이 항상 빈 문자열로 설정된다는 의미입니다.
또한 백틱 사용은 더 이상 사용되지 않습니다. 아래 코드는 더 깔끔해 보이고 원하는 작업을 수행합니다.
if [ -f "$mail_recipient_location" ]; then
textVariable=$(cat "$mail_recipient_location")
fi
답변3
당신은 우리에게서 멀지 않습니다. 이 시도
mail_recipient_location="$PWD/mail_config/myFile.txt"
[[ -f "$mail_recipient_location" ]] && textVariable=$(cat "$mail_recipient_location")
먼저 파일이 존재하는지 확인하십시오. 그런 다음 변수를 할당합니다.
POSIX 환경 [[ ... ]]
의 경우 [ ... ]
.
답변4
이 시도
[ -f "$mail_recipient_location" ] && textVariable=`cat "$mail_recipient_location"`