bashエイリアスでelse if(タスク)を使用する

bashエイリアスでelse if(タスク)を使用する

私の課題では、指定されたファイルが規則的で読み取り可能であることを確認するためにエイリアスを作成する必要があります。私が経験している問題は、else ifまたはelifを含めるとこのエラーが発生することです。

-bash: syntax error near unexpected token `else'

これは私のコードです...

alias getname='read filename'

alias vfile='getname; if [ ! -f $filename ]; then echo "Irregular file"; (exit 1); elif [ ! -r $filename]; then echo "Not readable"; (exit 2); fi;'

エラーが発生した場合に文のみを印刷するには、else ifを使用する必要があります。

シェル関数またはスクリプトがより実用的であることはわかっていますが、割り当てにはエイリアスを使用する必要があります。私はUNIXに初めて触れたので、助けてくれてありがとう。

編集:あなたが提供したファイル名(静的ファイル)であるエイリアスを使用する必要があり、それを変更しても質問に記載されている構文エラーが発生し続けますelse ifelif

編集2:問題を発見し、fi;elifステートメントの前の内容を削除しましたが、エラーが発生しますmissing ']'

答え1

だからこれは私にとって効果的です。

alias vfile='read -p "Enter the filename: " MY_FILE; if [ ! -f $MY_FILE ]; then echo "Irregular file"; (exit 1); elif [ ! -r $MY_FILE ]; then echo "Not readable"; (exit 2); fi'

編集する 私はそこで何をしたのか見ています=)

読みやすくするために、コマンドはここに分類されています。

alias vfile='read -p "Enter the filename: " MY_FILE; \
if [ ! -f $MY_FILE ]; then \
echo "Irregular file"; \
(exit 1); \
elif [ ! -r $MY_FILE ]; then \
echo "Not readable"; \
(exit 2); \
fi'

関連情報