これは私のコマンドです:
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"`